[C++] Probleme avec mon code?
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voila pour l'ecole, je dois ecrire un petit programme style distributeur de poissons... avec 5 articles et les options pour commander un article, voir les ventes et réinitialiser le distributeur.
Les infos sont nom de l'article, prix, ncv (nbre cannettes vendues), ncr (nbre de cannettes restantes) et mr (montant récolté).
Je vous donne mon code!
Mon probleme est que mon tot est toujours de 0! meme apres commande de plusieurs cannettes...
Merci d'y jeter un oeil.
W.
Voila pour l'ecole, je dois ecrire un petit programme style distributeur de poissons... avec 5 articles et les options pour commander un article, voir les ventes et réinitialiser le distributeur.
Les infos sont nom de l'article, prix, ncv (nbre cannettes vendues), ncr (nbre de cannettes restantes) et mr (montant récolté).
Je vous donne mon code!
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> typedef struct { char nom[11]; int ncr; int ncv; double prix; double mr; } Poisson ; Poisson distributeur[5]; void init(){ int i; strcpy (distributeur[0].nom,"Thon"); distributeur[0].prix=2.34; strcpy (distributeur[1].nom,"Saumon"); distributeur[1].prix=3.29; strcpy (distributeur[2].nom,"Sardines"); distributeur[2].prix=5.00; strcpy (distributeur[3].nom,"Hareng"); distributeur[3].prix=4.69; strcpy (distributeur[4].nom,"Anchois"); distributeur[4].prix=6.32; for (i=0; i<5; i++){ distributeur[i].ncr=20; distributeur[i].ncv=0; distributeur[i].mr=0.00; } } void menu() { int choix; int i; int j; int tot; do{ printf("Bienvenue dans le nouveau distributeur de poissons!\n\n"); for (i=0 ; i<5 ; i++) { j=i+1; printf("%d. --- %8s --- , Prix : %0.2f , Reste [%d]\n", j, distributeur[i].nom, distributeur[i].prix, distributeur[i].ncr); } printf("6. Voir les ventes et le montant recolte\n"); printf("7. Reinitialiser\n"); printf("0. Quitter\n\n"); scanf("%d", &choix); system("cls"); switch (choix){ case 1 : distributeur[0].ncr--; distributeur[0].ncv++; distributeur[0].mr=distributeur[0].mr+distributeur[0].prix; break; case 2 : distributeur[1].ncr--; distributeur[1].ncv++; distributeur[1].mr=distributeur[1].mr+distributeur[1].prix; break; case 3 : distributeur[2].ncr--; distributeur[2].ncv++; distributeur[2].mr=distributeur[2].mr+distributeur[2].prix; break; case 4 : distributeur[3].ncr--; distributeur[3].ncv++; distributeur[3].mr=distributeur[3].mr+distributeur[3].prix; break; case 5 : distributeur[4].ncr--; distributeur[4].ncv++; distributeur[4].mr=distributeur[4].mr+distributeur[4].prix; break; case 6 : tot=distributeur[0].mr+distributeur[1].mr+distributeur[2].mr+distributeur[3].mr+distributeur[4].mr; printf("On a vendu : \n"); for (i=0 ; i<5 ; i++) { printf(" %2d Cans de %s \n", distributeur[i].ncv, distributeur[i].nom); } printf("Pour un montant total de %0.2f euros.\n\n", tot); system("pause"); system("cls"); break; case 7 : for (i=0; i<5; i++){ distributeur[i].ncr=20; distributeur[i].ncv=0; distributeur[i].mr=0.00; } break; default : exit(0); break; } } while(choix!=0); } int main(){ init(); menu(); }
Mon probleme est que mon tot est toujours de 0! meme apres commande de plusieurs cannettes...
Merci d'y jeter un oeil.
W.
A voir également:
- [C++] Probleme avec mon code?
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
Bonjour,
A part le int au main il n'y a que du C pur par ici, point de C++.
Dans ce programme: un bug => deux problèmes.
1) Ton tot est un int, mon compilo m'a dit illico que tu tronquerais ta valeur lors du = somme des valeurs flotantes.
2) Ton tot est un int, tu l'affiches en tant que float. (mais lors de l'achat d'une cannette N°1, tot "bien" vaut 2)
juste le type de tot à changer et ça passe.
Voili voilou.
M.
A part le int au main il n'y a que du C pur par ici, point de C++.
Dans ce programme: un bug => deux problèmes.
1) Ton tot est un int, mon compilo m'a dit illico que tu tronquerais ta valeur lors du = somme des valeurs flotantes.
2) Ton tot est un int, tu l'affiches en tant que float. (mais lors de l'achat d'une cannette N°1, tot "bien" vaut 2)
juste le type de tot à changer et ça passe.
Voili voilou.
M.