henrydessss
Messages postés12Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention 9 octobre 2006 7 oct. 2006 à 16:52
reponse convenable mais :
si dans une fonction, je change par exemple contact[3].nom et contact[1].nom, est ce que ca restera chang dans le retour à main?
oui oui, je pourrais tester de moi meme, mais ma machine sous environement unix n'est pas à ma porté pour la journée.
henrydessss
Messages postés12Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention 9 octobre 2006 7 oct. 2006 à 18:03
tu sais, je suis debutant...
je comprends pas ceci :
repertoire &_obj1 (aindi que le suivant).
de plus, peut comparer contact[0] et contact[1] qui sont deux "structures" ?
aussi, tmp=contact[0] n'a aucun sens.
tmp=contact[0].nom en aurait, mais je devrais en faire autant pour le sprenom, email, adresse, etc... sachant que parfois, hors mis le nom, un champ peut etre vide.
en gros, imaginons, j'ai ceci :
Monsieur Y emaily
MonsieurX prenomx emailx telephonex
j'aimerais au final avoir
MonsieurX prenomx emailx telephonex
Monsieur Y emaily
soit contact[1].nom=MonsieurY contact[1].email=emaily
etc...
Vous n’avez pas trouvé la réponse que vous recherchez ?
if (strcmp(_obj1.prenom, _obj2.prenom) < 0) return true;
else return false;
}
else return false;
}
Cad, si A et B sont deux objets répertoire. A est plus petit que B si
A.nom est plus petit que B.nom (ordre alphabétique) ou si A.nom et
B.nom sont égales, alors A et plus petit que B si A.prenom est
inférieur à B.prenom.
henrydessss
Messages postés12Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention 9 octobre 2006 8 oct. 2006 à 13:27
hum.
bon, j'ai pas bool.h peu importe, j'ai modifié votre code pour retourner un entier.
mais gcc me dit cela :
repertoire.c: Dans la fonction « IsInferior »:
repertoire.c:17: error: `_obj1' undeclared (first use in this function)
de meme pour _obj2
j'ai bien pris soin de mettre cette fonction en tete de mon code. il me
dit ca alors meme que je ne fais pas appel ) cette fonction. je n'ai
fais que la mettre dans le code.
j'aurais aimé chercher à resoudre ce probleme moi meme, mais je ne
connais pas DU TOUT ce genre de chose. j'ignorais la notation
"_quelquechose" et le reste, comme passer contact[i] en paramettre...
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 8 oct. 2006 à 14:52
Mais tu penses mal :) il faut penser en terme de "type" et "object". Tu
peux envoyer n'importe quel objet en argument, ya pas de limitation. Le
fait d'utiliser un tableau, ca change strictement rien.
contact[i] c'est un objet de type REPERTOIRE.
repartoire test;
test et contact[i] c'est exactement le meme type d'objet, aucune différence.
Ton probleme vient surement du fait que lorsque tu déclares la fonoction IsInferior, le type "repertoire" n'est pas définie.
Donc le plus simple est que tu déclares la structure avant la fonction.
henrydessss
Messages postés12Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention 9 octobre 2006 8 oct. 2006 à 15:43
beh nan, ca change rien, toujours la meme erreur. mais peu importe,
j'ai fais exactement pareil dans le corps de ma fonction. ca m'embete
mais j'ai jusqu'a vendredi pour mettre le code au propre et
trouver une solution pour mettre ca dans une fonction a part, que je
puisse mettre ca aussi dans un fichier a part.
merci encore pour ton aide, ca m'a beaucoup appris :)
et voila le resultat de la compilation :
test.c: Dans la fonction « main »:
test.c:8: error: erreur de syntaxe before "obj1"
test.c: Hors de toute fonction :
test.c:30: error: erreur de syntaxe before "obj1"
test.c: Dans la fonction « inverser »:
test.c:32: error: `repertoire' undeclared (first use in this function)
test.c:32: error: (Each undeclared identifier is reported only once
test.c:32: error: for each function it appears in.)
test.c:32: error: erreur de syntaxe before "tmp"
test.c:33: error: `tmp' undeclared (first use in this function)
test.c:33: error: `obj1' undeclared (first use in this function)
test.c:34: error: `obj2' undeclared (first use in this function)
make: *** [test.o] Erreur 1
je sais, ca fait tres lourd a lire, je deteste copier/coller du code ou des resultats de mon shell, mais je crois que c'est quasiment indispensable ici.
//jusque la, pas le moindre probleme de compilation ou d'execution
inverser(contact[0],contact[1]);
}
void inverser(repertoire obj1, repertoire obj2)
{
repertoire tmp;
tmp=obj1;
obj1=obj2;
obj2=obj1;
}
Et ta fonction inverser ne fait rien du tout. Car tu passes tes
arguments par copie, et donc tu inverses des copies qui n'ont rien a
voir avec les objets que tu envois au début.
henrydessss
Messages postés12Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention 9 octobre 2006 9 oct. 2006 à 07:15
oh que j'ai honte.
la declaration de ma fonction dans une autre est une erreur enorme de ma part. j'ai pour habitude de declarer dans un .h , pour dire que je sais bien entendu qu'il faut declarer hors de toute fonction.
pour le passage par valeur, aussi une erreur d'innatention. je sais ce que sont des pointeurs. nan, ne crois pas que je débute depuis hier, j'ai quand meme eu 200/200 en "programmation c" l'an passé en licence :)
cependant, oui, j'ignorais qu'on pouvait passer toutes sortes d'objet en paramettre, comme des structures.
merci encore. Résolu.