Et en ce qui concerne la fonction parcours ?
Il ya des erreurs un peu partout j'ai l'impression
Version imprimable
Et en ce qui concerne la fonction parcours ?
Il ya des erreurs un peu partout j'ai l'impression
En fait dans la fonction parcours j'ai un soucis parce que la boucle prend toujours en compte le numéro de la dernière ville comme référence . Il faudrait que la boucle permette de bien prendre en compte le bon numéro de ville
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 void parcours(char tabville[NB_VILLES][LONGNOM],int taille) { /*initialisation*/ int i,chx,prec,longueur=0; system("clear"); for(i=0;i<taille;i++) { printf("%d-%s\n",i,tabville[i]); } printf("99-QUITTER\n"); printf("choisissez un numero de ville : "); fflush(stdout); scanf("%d",&chx); if(chx!=99) { while(chx!=99)//boucle de cheminement du parcours { i=0; while(tchemin[chx][i].ville_suiv!=-1) { printf("%d-%s %d km\n",tchemin[chx][i].ville_suiv,tabville[i],tchemin[chx][i].distance); fflush(stdout); i++; } printf("99-QUITTER\n"); printf("%d km parcourus\n",longueur); printf("choisissez un numero de ville : "); prec=chx; scanf("%d",&chx); if(chx!=99) { int j=0; while(j<NB_CHEMINS&&tchemin[prec][j].ville_suiv!=chx) { j++; } if(j!=NB_CHEMINS) { longueur+=tchemin[prec][j].distance; } else { printf("ERREUR: ville inconnue veuillez selectionner une ville dans le menu\n"); chx=prec; } } } } }
peu être une condition d'arrêt sur la boucle de l'appelant qui fait que tu as un appel de trop?
en général tu le vois bien au débugger ce genre de chose.
J'ai plutôt l'impression que cette ligne doit être modifiée ?
Citation:
printf("%d-%s %d km\n",tchemin[chx][i].ville_suiv,tabville[i],tchemin[chx][i].distance);
c'est tabville[i] qui ne va pas .
Comment ça se fait que tabville[i] ne boucle pas ?
Par exemple pour un parcours entre 3 villes a,b et c ça me donne toujours les distances pour a et b ? tabville[i] devrait boucler avec while et i++ ?
oui
et pour la ligneça me donne les bons numéros et les bonnes distances . Il n'y a qu'au niveau du nom de la ville que le résultat est erronéCitation:
printf("%d-%s %d km\n",tchemin[chx][i].ville_suiv,tabville[i],tchemin[chx][i].distance);
ce serait pas tabville[tchemin[chx][i].ville_suiv] ou un truc du genre mai_ça me parait lourd
C'est ça :ccool: mais c'est vrai que ça fait lourd dans le code :roll:
Je peux enlever les system clear sans que ça fasse de gros problèmes ?
Et dans la fonction ville pour enregister une ville je peux mettre n'importe quoi comme lettre sauf le n . Comment faire pour ne faire valider mes choix que par la lettre O (ou 'o') ?
En tout cas je te remercie grandement de ton aide :)
tu veux dire que quand tu met un n dans le nom de la ville ça ne marche pas?
peu etre que ton analyse de ce qui est frappé au clavier n' est pas correct
Non
Quand je tape n ça met fin à la liste de ville que je dois donner .
En fait l'utilisateur a le choix entre [o]ui et [n]on pour continuer ou finir la liste de villes .
Mais quand on tape autre chose que O (comme a ou b par exemple ) on continue la liste .
Je cherche le truc pour que la liste continue uniquement quand on tape o et que ça mette un message d'erreur pour toute autre lettre que O ou N
C'est normal
ici vérifie si c'est N ou n mais jamais si c'est O ou o.Code:
1
2
3
4
5
6
7
8
9 do { ville(&nbv,tvilles); getchar(); printf("%d ville(s) saisies\n",nbv); printf("voulez vous continuer ? [O]ui [N]on: "); scanf("%c",&chx); }while(chx!='n'&&chx!='N'&&nbv!=20);
Tu ferais comment pour mettre la condition que ce soit uniquement 'o' ou 'O' qui demande une nouvelle ville ?
il faut ajouter un test sur chx
du genre
if ((chx!='O')&&(chx!='o')) {
....
}