Bonjour et bienvenue sur le forum
J'ai corrigé l'indentation du code, c'est pas plus lisible comme ça ?
D'après ce que j'ai compris de l'énoncé, tu es partie dans la bonne direction.
Plusieurs remarques...
Pourquoi initialiser à 1 et pas à 0 ?
Comme c'est une distance, la valeur sera toujours positive donc tu peux utiliser un unsigned int (entier non signé, c'est à dire entier positif)
1 2 3 4 5 6 7 8
| char A ;
char B ;
char C;
char D;
char E;
char F;
char G;
char H ; |
A quoi va servir ces variables ?
Niveau écriture, tu mets des espaces un peu n'importe où (ce n'est pas interdit en C++
) mais pour faciliter la lecture, essaies d'être cohérent. Par exemple, pas d'espace avant le point-virgule, un espace avant et après le signe égal, etc.
1 2 3 4 5 6 7 8
| int kilom_parcouruA =0;
int kilom_parcouruB =0;
int kilom_parcouruC =0;
int kilom_parcouruD =0;
int kilom_parcouruE=0;
int kilom_parcouruF=0;
int kilom_parcouruG=0;
int kilom_parcouruH=0; |
Idem pour unsigned et les espaces.
Beaucoup plus gênant : tu définies tes variables dans le bloc du while (pour rappel, un bloc, c'est le code compris entre deux crochets {}, donc ici le bloc commence après la ligne contenant le while et se termine à la ligne avec le "Erreur")
Une variable déclarée dans un bloc est une variable locale : elle sera détruite en sortant du bloc. Tu vois le problème ? A chaque itération du while (donc à chaque fois que tu redemandes le nom de la voiture, les variables kilm_xxx auront été détruites et seront recréées juste après et initialisées à 0.
Pour éviter cela, il faut déplacer la déclaration de ces variables avant le while.
if(nom_voiture =='A', nom_voiture =='B', nom_voiture== 'C', nom_voiture == 'D', nom_voiture =='E', nom_voiture=='F', nom_voiture=='G',nom_voiture='H')
C'est une solution mais elle est un peu lourde. Une autre solution, plus simple, est d'ajouter une clause default dans le switch. Cette ligne sera utilisée à chaque fois que le switch ne trouve pas le caractère.
La syntaxe :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| switch ( Param ) {
case option1:
...
break;
case option2:
...
break;
case option3:
...
break;
...
default:
... // pas besoin de break puisqu'on est à la fin du switch
} |
Avec ce code, tu lis à chaque cycle la valeur et tu l'as met dans la variables. La distance précédente est donc perdue.
Il faut donc créer une variable dans le bloc de while uniquement pour entrer la valeur puis l'additionner à la variable correspondante à la bonne voiture :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| int kilom = 0;
switch (nom_voiture) {
case 'A':
cout << " Entrez le nombre de kilometre parcouru par cette voiture " << endl;
cin>>kilom;
kilom_parcouruA += kilom;
cout << " Le nombre total de Km parcouru par cette voiture est : " << kilom_parcouruA <<endl;
break;
case 'B':
cout << " Entrez le nombre de kilometre parcouru par cette voiture " << endl;
cin>>kilom;
kilom_parcouruB += kilom;
cout << " Le nombre total de Km parcouru par cette voiture est : " << kilom_parcouruB <<endl;
break;
} |
Voila pour le moment. Il y aurait encore quelques petites choses à corriger mais on verra plus tard. N'hésite pas à poster de nouveau quand tu auras avancé ou si tu as des questions.
Partager