[C++] Probleme avec mon code?

Résolu/Fermé
Utilisateur anonyme - 14 févr. 2008 à 19:55
 Utilisateur anonyme - 14 févr. 2008 à 20:25
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!

#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:

2 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
14 févr. 2008 à 20:18
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.
0
Utilisateur anonyme
14 févr. 2008 à 20:25
C'est parfait merci...
C'etait bien ça!

double tot a la place de int tot!

Merci beaucoup... J'aurais pu chercher longtemps!
0