A voir également:
- Probleme avec les pointeur
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris - Guide
- Pointeur souris disparu pc portable asus - Guide
- Le pointeur de ma télécommande lg ne fonctionne plus ✓ - Forum Matériel & Système
- Problème pointeur souris excel - Forum Excel
7 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
6 mai 2020 à 20:55
6 mai 2020 à 20:55
Bonjour,
Ton code est plutôt cohérent. Ce que j'ai pu voir en utilisant ces morceaux de code on n'a même pas la fin de la seconde fonction.)
- ligne 30, tu peux te trouver dans cas où i vaut exactement nbr, et donc l'expression tnb[i] serait hors bornes (si le tableau tnb[] à une taille de nbr, ce que j'ai supposé.)
- ligne 42 elle n'est pas conforme à la ligne 44. Là aussi je n'ai pas l'info mais je pense que 2nd paramètre de l'appel de fonction devrait être par adresse.
Avec des bribes de code mal indenté, difficile d'en dire plus.
Ton code est plutôt cohérent. Ce que j'ai pu voir en utilisant ces morceaux de code on n'a même pas la fin de la seconde fonction.)
- ligne 30, tu peux te trouver dans cas où i vaut exactement nbr, et donc l'expression tnb[i] serait hors bornes (si le tableau tnb[] à une taille de nbr, ce que j'ai supposé.)
- ligne 42 elle n'est pas conforme à la ligne 44. Là aussi je n'ai pas l'info mais je pense que 2nd paramètre de l'appel de fonction devrait être par adresse.
Avec des bribes de code mal indenté, difficile d'en dire plus.
le problème avec mon programme a commence dés le début exactement dans la ligne 25 j'ai essayer avec plusieurs compilateur mais le probleme perciste je ne sais pas ou se trouve le problème
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{ char nom1[20];
char pays1[20];
int poin1;
}ecurie;
typedef struct
{ char nom[20];
char prenom[20];
char pays[20];
ecurie vol;
int point;
}pilote;
typedef struct
{ char nomc[20];
int nombre;
char date[20];
int classement[20];
}grand_prix;
int recherche(int nbr,ecurie *m,int *tnb,ecurie *te)
{int i=0;
while(strcmp(te [i]->nom1,m->nom1)!=0)
i=i+1;
if (i>nbr)
return(-1);
else
{if (tnb[i]<2)
return(i);
else
return(0);}}
int recherche1(ecurie *te,ecurie *m,int *nbr)
{int i=0;
while(te[i].nom1!=m->nom1)
i=i+1;
if (i>*nbr)
return(-1);
else
return(i);}
void ajoutepilo(int *j,pilote *w,ecurie *m, pilote *tp,int *np,int *tnb,int *nbr,ecurie *te)
{
int x;
printf("donner le nom du %d pilote ",j);
scanf("%s",&w->nom);
printf("donner le prenom du %d pilote",j);
scanf("%s",&w->prenom);
printf("donnerle pays du %d pilote ",j);
scanf("%s",&w->pays);
w->vol.poin1=m->poin1;
w->point=0;
tp[*np]=*w;
tnb[recherche(&nbr,&m,&tnb,*te)]=tnb[recherche(nbr,m,tnb,te)]+1;
}
void ajoutepilote(int n,pilote *b,int *j,ecurie *e,int *np,int nbr,int *tnb,int *te,pilote *tp)
{ecurie m;
pilote w;
if (*np>20)
printf("pas d'espace");
else
{printf("a quellle ecurie appartient le pilote ");
scanf(m.nom1);
if (recherche (nbr,m,tnb,te)==0)
printf("le nombre max de pilotepour cette ecurie a ete deppaser");
else if (recherche(nbr,&m,tnb,te)==-1)
printf("l'ecurie n'exicte pas");
else
ajoutepilo(&j,&w,&m,tp,&np,tnb,&nbr,te);}
}
void ajouecuri(int n,ecurie *m,pilote *tp,int *to,int *ne,int *np,ecurie *te)
{int i,j,k=1;
if (ne>=10)
printf("nombre d'ecurie maximal a ete atteint");
else
{printf("donner le noms de l'ecurie");
scanf("%s",&te[ne+1]->nom1);
printf("donner le pays de l'ecurie");
scanf("%s",&te[ne+1]->pays1);
te[ne+1]->poin1=0;
for (j=1;j<=2;j++)
ajoutepilo();}}
void supprimepilo(pilote *x)
{while((i<=nbp)&&(tp[i]!=x->nom))
i++;
if (i>nbp)
printf("le pilote n'exicte pas")
else
for(j=i;j<=nbp;j++)
tp[i]=t[i+1];}
void maj()
{for (i=0;i=np;i++)
while((e>10)&&(e<1)
{printf("donner le classement du pilote %s %s",tp[i].nom,tp[i].prenom);
scanf("%d",&e);}
switch (e)
{case 1:
{ tp[i].point=tp[i].point+25;
te[recherche1()].point=te[recherche1()].point+25;}
break;
case 2:
{tp[i].point=tp[i].point+18;
te[recherche1()].point=te[recherche1()].point+18;}
break;
case 3:
{tp[i].point=tp[i].point+15;
te[recherche1()].point=te[recherche1()].point+15;}
break;
case 4:
{tp[i].point=tp[i].point+12;
te[recherche1()].point=te[recherche1()].point+12;}
break;
case 5:
{tp[i].point=tp[i].point+10;
te[recherche1()].point=te[recherche1()].point+10;}
break;
case 6:
{tp[i].point=tp[i].point+8;
te[recherche1()].point=te[recherche1()].point+8;}
break;
case 7
{tp[i].point=tp[i].point+6;
te[recherche1()].point=te[recherche1()].point+6;}
break;
case 8:
{tp[i].point=tp[i].point+4;
te[recherche1()].point=te[recherche1()].point+4;}
break;
case 9:
{tp[i].point=tp[i].point+2;
te[recherche1()].point=te[recherche1()].point+2;}
break;
default:
{tp[i].point=tp[i].point+1;
te[recherche1()].point=te[recherche1()].point+1;}
break;}}
void supprecurie()
{ecurie nol;
printf("donner le nom de l'ecurie a supprimer ");
scanf("%s",&nol.nom1);
if (recherche1()==-1)
printf("l'ecurie n'exicte pas")
else
for(i=(recherche1());i=nbre;i++)
tp[i]=t[i+1];}
void ajoutgp()
{grand_prix gp;
if(nbgp>=6)
printf("le nombre du grand prix maximal est atteint")
else
{printf("donner le nom de circuit");
scanf("%s",&gp.nomc);
printf("donner le nom de circuit");
scanf("%s",&gp.nombre);
printf("donner le nom de circuit");
scanf("%s",&gp.date);}}
void majgp()
{for (i=0;i<=5;i++)
maj()}
void suppgp()
{for (i=0;i<=5;i++)
tp[i]=t[i+1];}
void affgp()
{for (i=0;i=5;i++)
printf("%s",to.nomc);}
void affiche ()
{printf("le classement est")
for (i=0;i=5;i++)
printf("la %d °place \n %s" tp[i].nom);
}
void affiche ()
{printf("le classement est")
for (i=0;i=5;i++)
printf("la %d °place \n %s" tp[i].nom);
}
void affiche ()
{printf("le classement est")
for (i=0;i=5;i++)
printf("la %d °place \n %s" tp[i].nom);
}
void main ()
{grand_prix to[20];
ecurie te[10];
pilote tp[20];
ecurie m;
int to[10],ne,np,i,n,j;
for(i=0;i<n;i++)
to[i]=0;
printf("donner le nombre d'ecurie a ajoutter" );
scanf("%d",&n);
for (j=0;j<n;j++)
ajouecuri(n,&t[j],&tp,&to|j],&ne,j,&np);}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{ char nom1[20];
char pays1[20];
int poin1;
}ecurie;
typedef struct
{ char nom[20];
char prenom[20];
char pays[20];
ecurie vol;
int point;
}pilote;
typedef struct
{ char nomc[20];
int nombre;
char date[20];
int classement[20];
}grand_prix;
int recherche(int nbr,ecurie *m,int *tnb,ecurie *te)
{int i=0;
while(strcmp(te [i]->nom1,m->nom1)!=0)
i=i+1;
if (i>nbr)
return(-1);
else
{if (tnb[i]<2)
return(i);
else
return(0);}}
int recherche1(ecurie *te,ecurie *m,int *nbr)
{int i=0;
while(te[i].nom1!=m->nom1)
i=i+1;
if (i>*nbr)
return(-1);
else
return(i);}
void ajoutepilo(int *j,pilote *w,ecurie *m, pilote *tp,int *np,int *tnb,int *nbr,ecurie *te)
{
int x;
printf("donner le nom du %d pilote ",j);
scanf("%s",&w->nom);
printf("donner le prenom du %d pilote",j);
scanf("%s",&w->prenom);
printf("donnerle pays du %d pilote ",j);
scanf("%s",&w->pays);
- w->vol.nom1=*m->nom1;
- w->vol.pays1=*m->pays1;
w->vol.poin1=m->poin1;
w->point=0;
- np=*np+1;
tp[*np]=*w;
tnb[recherche(&nbr,&m,&tnb,*te)]=tnb[recherche(nbr,m,tnb,te)]+1;
}
void ajoutepilote(int n,pilote *b,int *j,ecurie *e,int *np,int nbr,int *tnb,int *te,pilote *tp)
{ecurie m;
pilote w;
if (*np>20)
printf("pas d'espace");
else
{printf("a quellle ecurie appartient le pilote ");
scanf(m.nom1);
if (recherche (nbr,m,tnb,te)==0)
printf("le nombre max de pilotepour cette ecurie a ete deppaser");
else if (recherche(nbr,&m,tnb,te)==-1)
printf("l'ecurie n'exicte pas");
else
ajoutepilo(&j,&w,&m,tp,&np,tnb,&nbr,te);}
}
void ajouecuri(int n,ecurie *m,pilote *tp,int *to,int *ne,int *np,ecurie *te)
{int i,j,k=1;
if (ne>=10)
printf("nombre d'ecurie maximal a ete atteint");
else
{printf("donner le noms de l'ecurie");
scanf("%s",&te[ne+1]->nom1);
printf("donner le pays de l'ecurie");
scanf("%s",&te[ne+1]->pays1);
te[ne+1]->poin1=0;
for (j=1;j<=2;j++)
ajoutepilo();}}
void supprimepilo(pilote *x)
{while((i<=nbp)&&(tp[i]!=x->nom))
i++;
if (i>nbp)
printf("le pilote n'exicte pas")
else
for(j=i;j<=nbp;j++)
tp[i]=t[i+1];}
void maj()
{for (i=0;i=np;i++)
while((e>10)&&(e<1)
{printf("donner le classement du pilote %s %s",tp[i].nom,tp[i].prenom);
scanf("%d",&e);}
switch (e)
{case 1:
{ tp[i].point=tp[i].point+25;
te[recherche1()].point=te[recherche1()].point+25;}
break;
case 2:
{tp[i].point=tp[i].point+18;
te[recherche1()].point=te[recherche1()].point+18;}
break;
case 3:
{tp[i].point=tp[i].point+15;
te[recherche1()].point=te[recherche1()].point+15;}
break;
case 4:
{tp[i].point=tp[i].point+12;
te[recherche1()].point=te[recherche1()].point+12;}
break;
case 5:
{tp[i].point=tp[i].point+10;
te[recherche1()].point=te[recherche1()].point+10;}
break;
case 6:
{tp[i].point=tp[i].point+8;
te[recherche1()].point=te[recherche1()].point+8;}
break;
case 7
{tp[i].point=tp[i].point+6;
te[recherche1()].point=te[recherche1()].point+6;}
break;
case 8:
{tp[i].point=tp[i].point+4;
te[recherche1()].point=te[recherche1()].point+4;}
break;
case 9:
{tp[i].point=tp[i].point+2;
te[recherche1()].point=te[recherche1()].point+2;}
break;
default:
{tp[i].point=tp[i].point+1;
te[recherche1()].point=te[recherche1()].point+1;}
break;}}
void supprecurie()
{ecurie nol;
printf("donner le nom de l'ecurie a supprimer ");
scanf("%s",&nol.nom1);
if (recherche1()==-1)
printf("l'ecurie n'exicte pas")
else
for(i=(recherche1());i=nbre;i++)
tp[i]=t[i+1];}
void ajoutgp()
{grand_prix gp;
if(nbgp>=6)
printf("le nombre du grand prix maximal est atteint")
else
{printf("donner le nom de circuit");
scanf("%s",&gp.nomc);
printf("donner le nom de circuit");
scanf("%s",&gp.nombre);
printf("donner le nom de circuit");
scanf("%s",&gp.date);}}
void majgp()
{for (i=0;i<=5;i++)
maj()}
void suppgp()
{for (i=0;i<=5;i++)
tp[i]=t[i+1];}
void affgp()
{for (i=0;i=5;i++)
printf("%s",to.nomc);}
void affiche ()
{printf("le classement est")
for (i=0;i=5;i++)
printf("la %d °place \n %s" tp[i].nom);
}
void affiche ()
{printf("le classement est")
for (i=0;i=5;i++)
printf("la %d °place \n %s" tp[i].nom);
}
void affiche ()
{printf("le classement est")
for (i=0;i=5;i++)
printf("la %d °place \n %s" tp[i].nom);
}
void main ()
{grand_prix to[20];
ecurie te[10];
pilote tp[20];
ecurie m;
int to[10],ne,np,i,n,j;
for(i=0;i<n;i++)
to[i]=0;
printf("donner le nombre d'ecurie a ajoutter" );
scanf("%d",&n);
for (j=0;j<n;j++)
ajouecuri(n,&t[j],&tp,&to|j],&ne,j,&np);}
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
7 mai 2020 à 22:43
7 mai 2020 à 22:43
Bonjour,
Tu sembles avoir oublié comment on doit poster du code.
Je ne peux compter jusqu'à 25, mais je peux lire la toute première ligne de code exécutée (c'est bien après la ligne 25). Dans cette ligne tu parcours une boucle dont le nombre d'itérations
Tu sembles avoir oublié comment on doit poster du code.
Je ne peux compter jusqu'à 25, mais je peux lire la toute première ligne de code exécutée (c'est bien après la ligne 25). Dans cette ligne tu parcours une boucle dont le nombre d'itérations
nest non initialisé pour initialiser un tableau
to[]. D'où dès la première ligne ton code peut faire n'importe quoi.
oui j'ai oublier comment en post un code en c excuse moi
le probleme n'est pas avec le taille n de tableau ila m'a affichier cette message de'erreur
25 35 SansNom1.cpp [Error] request for member 'nom1' in '* m', which is of pointer type 'ecurie*' (maybe you meant to use '->' ?)
dans cette ligne while(strcmp(te [i]->nom1,m->nom1)!=0)
le probleme n'est pas avec le taille n de tableau ila m'a affichier cette message de'erreur
25 35 SansNom1.cpp [Error] request for member 'nom1' in '* m', which is of pointer type 'ecurie*' (maybe you meant to use '->' ?)
dans cette ligne while(strcmp(te [i]->nom1,m->nom1)!=0)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
9 mai 2020 à 15:26
9 mai 2020 à 15:26
Ah oui, cette ligne ne peut pas compiler. Mais ton compilateur semble indiquer une erreur correspondant à un autre code. Dans la ligne a un moment il faut utiliser la
Est-ce que
Est-ce que
->et à un autre il faut utiliser le
..
Est-ce que
te[i]est un pointeur ? Si non, il faut utiliser un
..
Est-ce que
mest un pointeur ? Si oui, il faut utiliser une
->.
oui te est un pointeur puisque j'ai utiliser cet var dans une fonction et j'ete obliger d'utiliser cet pointeur dans une fonction inclus dans la premier fonction donc je ne sais pas es que lorsque je déclare te dans la sous fonction es que j'Ecrire **te ou te ou *te j'ai essaye avec tous les écriture mais ca ne mache pas et pour le -> et le . j'essayer dans cette ligne les deux mais ca ne marche pas
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
10 mai 2020 à 12:08
10 mai 2020 à 12:08
bonjour, je pense que le point de départ, c'est d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char nom1[20]; char pays1[20]; int poin1; }ecurie; typedef struct { char nom[20]; char prenom[20]; char pays[20]; ecurie vol; int point; }pilote; typedef struct { char nomc[20]; int nombre; char date[20]; int classement[20]; }grand_prix; int recherche(int nbr,ecurie **m,int **tnb,ecurie **te) {int i=0; while(strcmp(te [i]->nom1,*m->nom1)!=0) i=i+1; if (i>nbr) return(-1); else {if (tnb[i]<2) return(i); else return(0);}} int recherche1(ecurie *te,ecurie *m,int *nbr) {int i=0; while(te[i].nom1!=m->nom1) i=i+1; if (i>*nbr) return(-1); else return(i);} void ajoutepilo(int *j,pilote *w,ecurie *m, pilote *tp,int *np,int *tnb,int *nbr,ecurie *te) { int x; printf("donner le nom du %d pilote ",j); scanf("%s",&w->nom); printf("donner le prenom du %d pilote",j); scanf("%s",&w->prenom); printf("donnerle pays du %d pilote ",j); scanf("%s",&w->pays); *w->vol.nom1=*m->nom1; *w->vol.pays1=*m->pays1; w->vol.poin1=m->poin1; w->point=0; *np=*np+1; tp[*np]=*w; tnb[recherche(&nbr,&m,&tnb,*te)]=tnb[recherche(nbr,m,tnb,te)]+1; } void ajoutepilote(int n,pilote *b,int *j,ecurie *e,int *np,int nbr,int *tnb,int *te,pilote *tp) {ecurie m; pilote w; if (*np>20) printf("pas d'espace"); else {printf("a quellle ecurie appartient le pilote "); scanf(m.nom1); if (recherche (nbr,m,tnb,te)==0) printf("le nombre max de pilotepour cette ecurie a ete deppaser"); else if (recherche(nbr,&m,tnb,te)==-1) printf("l'ecurie n'exicte pas"); else ajoutepilo(&j,&w,&m,tp,&np,tnb,&nbr,te);} } void ajouecuri(int n,ecurie *m,pilote *tp,int *to,int *ne,int *np,ecurie *te) {int i,j,k=1; if (ne>=10) printf("nombre d'ecurie maximal a ete atteint"); else {printf("donner le noms de l'ecurie"); scanf("%s",&te[ne+1]->nom1); printf("donner le pays de l'ecurie"); scanf("%s",&te[ne+1]->pays1); te[ne+1]->poin1=0; for (j=1;j<=2;j++) ajoutepilo();}} void supprimepilo(pilote *x) {while((i<=nbp)&&(tp[i]!=x->nom)) i++; if (i>nbp) printf("le pilote n'exicte pas") else for(j=i;j<=nbp;j++) tp[i]=t[i+1];} void maj() {for (i=0;i=np;i++) while((e>10)&&(e<1) {printf("donner le classement du pilote %s %s",tp[i].nom,tp[i].prenom); scanf("%d",&e);} switch (e) {case 1: { tp[i].point=tp[i].point+25; te[recherche1()].point=te[recherche1()].point+25;} break; case 2: {tp[i].point=tp[i].point+18; te[recherche1()].point=te[recherche1()].point+18;} break; case 3: {tp[i].point=tp[i].point+15; te[recherche1()].point=te[recherche1()].point+15;} break; case 4: {tp[i].point=tp[i].point+12; te[recherche1()].point=te[recherche1()].point+12;} break; case 5: {tp[i].point=tp[i].point+10; te[recherche1()].point=te[recherche1()].point+10;} break; case 6: {tp[i].point=tp[i].point+8; te[recherche1()].point=te[recherche1()].point+8;} break; case 7 {tp[i].point=tp[i].point+6; te[recherche1()].point=te[recherche1()].point+6;} break; case 8: {tp[i].point=tp[i].point+4; te[recherche1()].point=te[recherche1()].point+4;} break; case 9: {tp[i].point=tp[i].point+2; te[recherche1()].point=te[recherche1()].point+2;} break; default: {tp[i].point=tp[i].point+1; te[recherche1()].point=te[recherche1()].point+1;} break;}} void supprecurie() {ecurie nol; printf("donner le nom de l'ecurie a supprimer "); scanf("%s",&nol.nom1); if (recherche1()==-1) printf("l'ecurie n'exicte pas") else for(i=(recherche1());i=nbre;i++) tp[i]=t[i+1];} void ajoutgp() {grand_prix gp; if(nbgp>=6) printf("le nombre du grand prix maximal est atteint") else {printf("donner le nom de circuit"); scanf("%s",&gp.nomc); printf("donner le nom de circuit"); scanf("%s",&gp.nombre); printf("donner le nom de circuit"); scanf("%s",&gp.date);}} void majgp() {for (i=0;i<=5;i++) maj()} void suppgp() {for (i=0;i<=5;i++) tp[i]=t[i+1];} void affgp() {for (i=0;i=5;i++) printf("%s",to.nomc);} void affiche () {printf("le classement est") for (i=0;i=5;i++) printf("la %d °place \n %s" tp[i].nom); } void affiche () {printf("le classement est") for (i=0;i=5;i++) printf("la %d °place \n %s" tp[i].nom); } void affiche () {printf("le classement est") for (i=0;i=5;i++) printf("la %d °place \n %s" tp[i].nom); } void main () {grand_prix to[20]; ecurie te[10]; pilote tp[20]; ecurie m; int to[10],ne,np,i,n,j; for(i=0;i<n;i++) to[i]=0; printf("donner le nombre d'ecurie a ajoutter" ); scanf("%d",&n); for (j=0;j<n;j++) ajouecuri(n,&t[j],&tp,&to|j],&ne,j,&np);}