Vous êtes sur la page 1sur 3

1 #include <stdio.

h>
2 #include <stdlib.h>
3 #define NMAX 50
4 #include <string.h>
5 typedef struct {
6 int jour;
7 char mois[15];
8 int annee;
9 } date;
10 typedef struct {
11 int num;
12 char nom[30];
13 float prixHT;
14 date date_limite;
15 } facture;
16 facture lire(){
17 facture f;
18 printf("num :"); scanf("%d",&f.num); getchar();
19 printf("nom client :"); gets(f.nom);
20 printf("prix HT :"); scanf("%f",&f.prixHT);
21 printf ("date limite (j m a)\n"); scanf("%d%s%d",&f.date_limite.jour,f.date_limite.mois,&f.date_limite.
annee);
22 return f;
23 }
24 void lire_tous(facture*F,int nf){
25 facture*p;
26 for(p=F;p-F<nf;p++){
27 *p=lire();
28 }
29 }
30 void afficher_tous(facture*F,int nf){
31 int i;
32
33 for(i=0;i<nf;i++){
34 printf ("facture num %d, Nom client : %s, prix HT =%f,date limite : %d %s %d\n",F[i].num,F[i].nom, F[i
].prixHT,F[i].date_limite.jour,F[i].date_limite.mois,F[i].date_limite.annee);
35 }
36 }
37 void trier(facture*F,int nf){
38 int i,j,k;
39 facture temp;
40 for(i=0;i<=nf-2;i++){
41 k=i;
42
43 for (j=i+1;j<=nf-1;j++){
44 if(strcmp(F[j].nom,F[k].nom)<0) k=j;
45 }
46
47 temp=F[i];
48 F[i]=F[k];
49 F[k]=temp;
50 }
51 }
52
53 facture recherche_dichotomique(facture*F,int nf,char*nom){
54 int inf=0,sup=nf-1,m;
55 facture f0={0,"",0,{0,"",0}};
56 while (inf<=sup){
57 m=(inf+sup)/2;
58 if (strcmp(nom,F[m].nom)==0) return F[m];
59 else
60 if (strcmp(nom,F[m].nom)<0) sup=m-1;
61 else inf=m+1;
62 }
63 }
64 void majfactures(facture*F,int nf){
65 int i,j,ar;
66 for(i=0;i<nf;i++){
67 ar=2021-F[i].date_limite.annee;
68 for(j=0;j<ar;j++){
69 F[i].prixHT=F[i].prixHT*1.1;
70 }
71 }
72 }
73 float totalTTC(facture*F,int nf){
74 facture*p;
75 float s=0;
76 for(p=F;p-F<nf;p++){
77 s=s+p->prixHT*1.2;
78 }
79 return s;
80 }
81 void sauvgarder(facture*F,int nf,char*fichier){
82 FILE*fich=fopen(fichier,"w");
83 int i;
84 for(i=0;i<nf;i++){
85 fprintf(fich,"facture num %d, Nom client : %s, prix HT =%f,date limite : %d %s %d\n",F[i].num,F[i].nom,
F[i].prixHT,F[i].date_limite.jour,F[i].date_limite.mois,F[i].date_limite.annee);
86 }
87 fclose(fich);
88 }
89 int main4()
90 {
91 facture f[NMAX]; int n;
92 facture fr;
93 do {
94 printf ("donner le nombre de factures\n");
95 scanf("%d",&n);
96 } while(n<=0 || n>NMAX);
97 lire_tous(f,n);
98 afficher_tous(f,n);
99 trier(f,n);
100 printf("le tableau apres le tri est\n");
101 afficher_tous(f,n);
102 fr=recherche_dichotomique(f,n,"hanae");
103 afficher_tous(&fr,1);
104 majfactures(f,n);
105 afficher_tous(f,n);
106 printf("le prix total TTC=%f",totalTTC(f,n));
107 sauvgarder(f,n,"monFichier.txt");
108 return 0;
109 }
110
111 int main()
112 {
113 int choix;
114 do{
115 printf("saisir votre choix \n");
116 printf("1: pour tp1\n");
117 printf("2:pour tp 2\n");
118 printf("3:pour tp 3\n");
119 printf("4: pour tp4\n");
120 printf("5:pour arreter le programme\n");
121 scanf("%d",&choix);
122 switch(choix){
123 case 1: main1(); break;
124 case 2: main2(); break;
125
126 case 3: main3(); break;
127 case 4: main4(); break;
128 case 5: printf("fin programme"); break;
129 default: printf("choix invalide\n");
130
131 }
132 }while ( choix!=5);
133 return 0;
134 }

Vous aimerez peut-être aussi