Svp svp svp corrigez moi cet exercice
rourou1211
-
feadin91 Messages postés 282 Statut Membre -
feadin91 Messages postés 282 Statut Membre -
bonjours, Slt
j'espere bien que vs me corrigé cette exercice en language c :
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
typedef struct
{int n_ap;
char nom[20],prenom[20];
char adr[20];
char ville[20];
int c_p;
}abonne;
abonne *reservation(int*n)
{abonne *p;
do
{printf("donner le n°d'abonne");
scanf("%d",n);
}while (n<0);
p=(abonne*)malloc(*n*sizeof(abonne));
if (p==NULL) exit(-1);
return p;}
int exist_n(abonne *t,int n,int i)
{int j,c=0;
for(j=0;j<n;j++)
if ((t+j)->n_ap==i)
c=1;
return c;}
void saisie_info(abonne *t,int n)
{int i;
for(i=0;i<n;i++)
{do
{printf("donner numéro d'appel unique");
scanf("%d",&(t+i)->n_ap);
}while(exist_n(t,n,i)!=0);
printf("nom");gets((t+i)->nom);
printf("prenom");gets((t+i)->prenom);
printf("adresse");gets((t+i)->adr);
printf("ville");gets((t+i)->ville);
printf("code postal");
scanf("%d",&(t+i)->c_p);
}}
void rech_ab(abonne *t,int n,int a)
{int i=0;
while (((t+i)->n_ap!=a)&&(i<n))
i++;
if(i<n)
{printf("l'abonne recherche est %s %s",(t+i)->prenom,(t+i)->nom);}
else
printf("non trouve");}
void permute(abonne *x, abonne *y)
{abonne z;
z=*x;
*x=*y;
*y=z;}
abonne *max(abonne *t, int n)
{int i;
abonne *m;
m=t;
for (i=1;i<n;i++)
if ((t+i)->n_ap > m->n_ap)
m=t+i;
return(m);}
void tri (abonne *t, int n)
{int i;
for(i=0;i<n;i++)
permute(t+i,max((t+i),n-i));}
void affiche (abonne *t, int n)
{int i;
for(i=0;i<n;i++)
{printf ("voilà les informations d'abonne %d",i);
printf ("%d",(t+i)->n_ap);
printf ((t+i)->nom);
printf ((t+i)->prenom);
printf ((t+i)->adr);
printf ((t+i)->ville);
printf ("%d",(t+i)->c_p);
}}
void abon_ville(abonne *t, int n, char v[20])
{int i;
for(i=0;i<n;i++)
if ( strcmp((t+i)->ville,v)==0)
{printf((t+i)->nom,(t+i)->prenom);}}
int exist_v(abonne *t, int x, char *tvv)
{int j,i,c=0;
for(i=0;i<j;i++)
if(strcmp((tvv+i),(t+x)->ville)==0)
c=1;
return c;}
void *remplissage (abonne *t, int n, int *m)
{int j,i;
char *tvv;
tvv=(char*)malloc(n*sizeof(char));
if (tvv==NULL) exit(-1);
j=0;
for(i=0;i<n;i++)
if ((exist_v((t+i),j,tvv)==0))
{*(tvv+j)=(char*)malloc(strlen(t+i)->ville)+1*sizeof(char);
strcpy((tvv+j),t+i->ville);
j++;}
tv=(char*)malloc(j+sizeof(char));
for(c=0;c<=j;c++)
*(tv+c)=*(tvv+c);
*m=j;
return tv;}
void n_ab_v(abonne *t, int n, char *tv, int m)
{int i,j,c,m;tv=remplissage(&t,n,&m)
for(j=0;j<=m;j++)
{c=0;
for(i=0;i<n;i++)
if(strcmp(t+i_>ville,*(t+i)==0))
c++;
printf("nombre d'abonne de %s est %d",*(t+i),c);}
}
void liste_v(char *tv, int m)
{int i;
for(i=0;i<=m;i++)
puts(*(tv+i));
}
void main()
{int n,m;
abonne *t;
char *tv;
printf("1 pour reservation");
printf("2 pour saisir les informations");
printf("3 pour chercher un abonne");
printf("4 pour trier le tableau d'abonnes");
printf("5 pour afficher les abonnes");
printf("6 pour afficher les abonnes d'une ville donnee");
printf("7 pour savoir le n° d'abonnes pour chaque ville");
printf("8 pour afficher la liste des villes");
printf("9 pour quitter");
scanf ("%d",&choix);
switch(choix)
{case 1:{t=reservation(&n);goto a;}
case 2:{saisir_info(&t,n);goto b;}
case 3:{printf("donner un numero à chercher");
scanf ("%d",&a);
rech_ab(&t,n a);
goto b;}
case 4:{tri(&t,n);
goto b;}
case 5:{affiche(&t,n);
goto b;}
case 6:{printf("donner la ville à chercher");
gets(vch);
rech_v(&t,n,vch);
goto a;}
case 7:{n_ab_v(&t,n,&tv,m);
goto b;}
case 8:{liste_v(&tv,m);
goto b;}
case 9: printf("fin du programme");
exit(-1);
default{printf("n°incorrect");
goto b;}}
getch();}
merci d'avance et dsl
j'espere bien que vs me corrigé cette exercice en language c :
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
typedef struct
{int n_ap;
char nom[20],prenom[20];
char adr[20];
char ville[20];
int c_p;
}abonne;
abonne *reservation(int*n)
{abonne *p;
do
{printf("donner le n°d'abonne");
scanf("%d",n);
}while (n<0);
p=(abonne*)malloc(*n*sizeof(abonne));
if (p==NULL) exit(-1);
return p;}
int exist_n(abonne *t,int n,int i)
{int j,c=0;
for(j=0;j<n;j++)
if ((t+j)->n_ap==i)
c=1;
return c;}
void saisie_info(abonne *t,int n)
{int i;
for(i=0;i<n;i++)
{do
{printf("donner numéro d'appel unique");
scanf("%d",&(t+i)->n_ap);
}while(exist_n(t,n,i)!=0);
printf("nom");gets((t+i)->nom);
printf("prenom");gets((t+i)->prenom);
printf("adresse");gets((t+i)->adr);
printf("ville");gets((t+i)->ville);
printf("code postal");
scanf("%d",&(t+i)->c_p);
}}
void rech_ab(abonne *t,int n,int a)
{int i=0;
while (((t+i)->n_ap!=a)&&(i<n))
i++;
if(i<n)
{printf("l'abonne recherche est %s %s",(t+i)->prenom,(t+i)->nom);}
else
printf("non trouve");}
void permute(abonne *x, abonne *y)
{abonne z;
z=*x;
*x=*y;
*y=z;}
abonne *max(abonne *t, int n)
{int i;
abonne *m;
m=t;
for (i=1;i<n;i++)
if ((t+i)->n_ap > m->n_ap)
m=t+i;
return(m);}
void tri (abonne *t, int n)
{int i;
for(i=0;i<n;i++)
permute(t+i,max((t+i),n-i));}
void affiche (abonne *t, int n)
{int i;
for(i=0;i<n;i++)
{printf ("voilà les informations d'abonne %d",i);
printf ("%d",(t+i)->n_ap);
printf ((t+i)->nom);
printf ((t+i)->prenom);
printf ((t+i)->adr);
printf ((t+i)->ville);
printf ("%d",(t+i)->c_p);
}}
void abon_ville(abonne *t, int n, char v[20])
{int i;
for(i=0;i<n;i++)
if ( strcmp((t+i)->ville,v)==0)
{printf((t+i)->nom,(t+i)->prenom);}}
int exist_v(abonne *t, int x, char *tvv)
{int j,i,c=0;
for(i=0;i<j;i++)
if(strcmp((tvv+i),(t+x)->ville)==0)
c=1;
return c;}
void *remplissage (abonne *t, int n, int *m)
{int j,i;
char *tvv;
tvv=(char*)malloc(n*sizeof(char));
if (tvv==NULL) exit(-1);
j=0;
for(i=0;i<n;i++)
if ((exist_v((t+i),j,tvv)==0))
{*(tvv+j)=(char*)malloc(strlen(t+i)->ville)+1*sizeof(char);
strcpy((tvv+j),t+i->ville);
j++;}
tv=(char*)malloc(j+sizeof(char));
for(c=0;c<=j;c++)
*(tv+c)=*(tvv+c);
*m=j;
return tv;}
void n_ab_v(abonne *t, int n, char *tv, int m)
{int i,j,c,m;tv=remplissage(&t,n,&m)
for(j=0;j<=m;j++)
{c=0;
for(i=0;i<n;i++)
if(strcmp(t+i_>ville,*(t+i)==0))
c++;
printf("nombre d'abonne de %s est %d",*(t+i),c);}
}
void liste_v(char *tv, int m)
{int i;
for(i=0;i<=m;i++)
puts(*(tv+i));
}
void main()
{int n,m;
abonne *t;
char *tv;
printf("1 pour reservation");
printf("2 pour saisir les informations");
printf("3 pour chercher un abonne");
printf("4 pour trier le tableau d'abonnes");
printf("5 pour afficher les abonnes");
printf("6 pour afficher les abonnes d'une ville donnee");
printf("7 pour savoir le n° d'abonnes pour chaque ville");
printf("8 pour afficher la liste des villes");
printf("9 pour quitter");
scanf ("%d",&choix);
switch(choix)
{case 1:{t=reservation(&n);goto a;}
case 2:{saisir_info(&t,n);goto b;}
case 3:{printf("donner un numero à chercher");
scanf ("%d",&a);
rech_ab(&t,n a);
goto b;}
case 4:{tri(&t,n);
goto b;}
case 5:{affiche(&t,n);
goto b;}
case 6:{printf("donner la ville à chercher");
gets(vch);
rech_v(&t,n,vch);
goto a;}
case 7:{n_ab_v(&t,n,&tv,m);
goto b;}
case 8:{liste_v(&tv,m);
goto b;}
case 9: printf("fin du programme");
exit(-1);
default{printf("n°incorrect");
goto b;}}
getch();}
merci d'avance et dsl
Configuration: Windows XP Firefox 3.0.9
3 réponses
-
-
Il en a qui se font pas chier à ce que je vois !!!!
Tu veux aussi que l'on suive tes cours à ta place ?
Si tu as testé ton programme et qu'il y a des erreurs, ebvoie-bous ce que t'indiquent les erreurs, on pourra peut être t'aider à ce moment là ! -
Oui c'est vrai que la compréhension est quand même plus facile avec l'indentation du code, parce que là, je préfère lire un bouquin en protugais, je pense que je comprendrais mieux :)
Nan je charrie c'est pas sympa, mais c'est vrai qu'un code indenté est quand même plus agréable à lire.