Bonjour j'ai une problème sur la fonction void main ( ) je pense que c'est le tableau , quelqu'un peut m'aider svp ?
#include <stdio.h>
struct point{
char couleur[10];
int x;
int y;
};
typedef struct point tpoint;
tpoint lecture_p1()
{
tpoint p;
printf ("donner le couleur de ton point");
scanf("%s",p.couleur);
printf("donner l'abscisse de ton point");
scanf("%d",p.x);
printf("donner l'ordonnee de ton point");
scanf("%d",p.y);
return p;
}
void affiche_p(tpoint p)
{
printf("couleur:",p.couleur);
printf("abscisse:",p.x);
printf("ordonnee:",p.y);
}
void lecture_p2(tpoint* p)
{
printf("donner le couleur de ton point");
scanf("%s",(*p).couleur);
printf("donner l'abscisse de ton point");
scanf("%d",(*p).x);
printf("donner l'ordonnee de ton point");
scanf("%d",(*p).y);
}
void remplir_tp(tpoint *t,int *n)
{int i;
do
{
printf ("donner le nombre de point");
scanf("%d",n);
}while(!(*n<=20));
for (i=0;i<*n;i++)
{
printf("donner les coordonnee de ton point N=°%d",i);
lecture_p2(&t[i]);
}
}
void affiche_tp(int *n,tpoint *t)
{int i;
for (i=0;i<*n;i++)
{
printf("les coordonnees du point numero %d:",i);
printf("le couleur est %s",&t[i].couleur);
printf("l'abscisse est %d",&t[i].x);
printf("l'ordonnee est %d",&t[i].y);
}
}
int existe_p(tpoint t[],int n,int ord,int absc,tpoint p,int i)
{
i=0;
ord=p.y;
absc=p.x;
if(i<n)
return -1;
else if((t[i].x==ord)&&(t[i].y==absc))
return i;
return existe_p(t,n,ord,absc,p,i+1);
}
void main( )
{
tpoint k,t[20],p;
int n,i,pos,ord,absc;
remplir_tp(&t,&n);
affiche_tp(&n,&t);
printf("donner le point p");
p=lecture_p1();
pos=existe_p(t,n,ord,absc,p,i);
if (pos==-1)
printf("p n'existe pas");
if (pos!=-1)
affiche_p(p);
}
Ligne 75: t est un tableau, donc une adresse. Et tu passes l'adresse d'une adresse à la fonction remplir_tp(), qui n'attend qu'une adresse.
Ligne 76: même erreur.
Quand tu auras réglé ces deux erreurs, il en restera d'autres, à régler sous peine de crash:
#.c: In function 'lecture_p1':
#.c:14:13: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat=]
scanf("%d",p.x);
^
#.c:16:13: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat=]
scanf("%d",p.y);
^
#.c: In function 'lecture_p2':
#.c:30:13: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat=]
scanf("%d",(*p).x);
^
#.c:32:13: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat=]
scanf("%d",(*p).y);
^
#.c: At top level:
#.c:71:6: warning: return type of 'main' is not 'int' [-Wmain]
void main( )
^~~~
#.c: In function 'main':
#.c:73:12: warning: unused variable 'k' [-Wunused-variable]
tpoint k,t[20],p;
^
#.c:79:8: warning: 'ord' is used uninitialized in this function [-Wuninitialized]
pos=existe_p(t,n,ord,absc,p,i);
~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#.c:79:8: warning: 'absc' is used uninitialized in this function [-Wuninitialized]
#.c:79:8: warning: 'i' is used uninitialized in this function [-Wuninitialized]
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent