Programme de tri - C - Programmation
Marsh Posté le 27-10-2010 à 18:44:08
neofly a écrit : Bonsoir à tous, |
félicitations
Marsh Posté le 27-10-2010 à 18:55:09
ReplyMarsh Posté le 27-10-2010 à 18:58:13
neofly a écrit :
|
Tu devrais aussi te renseigner sur ce que fait l'opérateur "++". Tu comprendras qu'il n'a rien à faire dans cette boucle.
Marsh Posté le 27-10-2010 à 19:01:24
tpierron a écrit : |
bhe si je le met pas il va pas me comparer ma case du tableau avec la suivante ca revient à mettre *tab(+i+1)
c'est la même chose non?
merci pour ta contribution mais pour ce qui est de mes 3 questions as-tu une idée?
Marsh Posté le 27-10-2010 à 19:15:25
je confirme ce que dit tpierron, le contenu de tes boucles est complètement faux.
ton system("pause" ); mérite la peine de mort dans beaucoup de pays (si tu veux lire ce qui s'est passé, tu peux lancer ton programme depuis une console dos ou faire un coup de CTRL+F5 si tu es sous visual studio)
pour ce qui est de ton menu, tu donnes toi-même la réponse à ton problème : pour qu'il boucle tant que ce n'est pas entre 1 et 4, et bien utilise une boucle et mets la condition de sortie sur la validité de la saisie
Marsh Posté le 27-10-2010 à 19:19:47
theshockwave a écrit : je confirme ce que dit tpierron, le contenu de tes boucles est complètement faux. |
peux tu me dire pourquoi le contenu de mes boucles est faux??
Je débute dans le C, pourtant lorsque je retire le switch tout fonctionne ?!? ?!?
Marsh Posté le 27-10-2010 à 19:33:00
Arf, et accessoirement, *(tab+i) peut s'écrire plus lisiblement de cette manière :
Code :
|
Marsh Posté le 27-10-2010 à 19:40:42
tpierron a écrit : Arf, et accessoirement, *(tab+i) peut s'écrire plus lisiblement de cette manière :
|
je sais mais pour l'exercice je devais changer les tableaux en pointeurs peux tu me dire comment (selon toi ) je dois faire ca?
Marsh Posté le 27-10-2010 à 22:30:43
Au début de ton main
Code :
|
Ne fais surtout pas ça, tab_note est statique et nbr_eleve aussi, pour moi le compilateur devrait te jeter.
En tout cas, il y a de forte chance pour que tu écrases des données lorsque tu écris dans ton tableau vu que le compilateur n'a aucune moyen d'allouer la taille qui va bien. Utilise un malloc.
Marsh Posté le 28-10-2010 à 12:09:30
h3bus a écrit : Au début de ton main
|
Extension de gcc depuis bien longtemps, normalisée en C99. (Je ne me souviens pas de différences entre la version normalisée et ce que fait gcc, mais c'est pas impossible qu'il y en ait). Quelque chose d'approchant (alloca() est aussi bien répandu).
Citation : En tout cas, il y a de forte chance pour que tu écrases des données lorsque tu écris dans ton tableau |
Pourtant allouer nbr_eleve entiers et les libérer à la sortie du bloc est bien le comportement spécifié.
Citation : vu que le compilateur n'a aucune moyen d'allouer la taille qui va bien. |
Et pourquoi donc?
Marsh Posté le 28-10-2010 à 13:57:50
Un Programmeur a écrit :
|
Je ne connaissais pas cette extension de C99 méa culpa!!
Cependant je trouve que ça pue pas mal de mélanger code et déclaration...
Marsh Posté le 27-10-2010 à 18:41:10
Bonsoir à tous,
Comme dit dans le titre j'ai réalisé un programme de tri par ordre croissant et décroissant, j'ai testé ma fonction (tri à bulle) et elle fonctionne mais voilà le problème:
Lorsque que je crée un switch case pour donner le choix à l'utilisateur de faire tel ou tel tri cela ne fonctionne plus il me trie mes nombres dans l'ordre où je les ai taper:
1ère question : quel est le problème?
2ème question: comment faire dans ma fonction menu pour qu'il boucle au cas où la personne ne tape pas un nombre entre 1 et 4?
3ème question: comment faire pour re-proposer un choix ou stopper le programme après avoir effectué une action ? (avec un if??)
merci d'avance et voici le code :
Programme:
Message édité par gilou le 28-10-2010 à 10:14:01