Visualizzazione dei risultati da 1 a 10 su 13

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    15

    [C] Simulatore distributore bevande

    Ciao a tutti ragazzi, allora ho appena finito di compilare un programma, ma purtroppo una volta compilato ed eseguito sono apparse subito delle imperfezioni.
    Allora lo scopo del programma e quello di simulare un un deistributore di bevande.
    E questo e il codice sorgente che ho creato.
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main()
    {
    int P;  // prodotti
    int Pr; // prezzo del prodotto
    int MON; // monette
    int Imp; // vallore dell'importo
    int DIF; // centesimi mancanti
    int RT;  // resto totale
    int RC;  // resto monete da 5 cent
    int RU;  // resto monete da 1 cent
    printf("           Menu di scelta              \n");
    printf(" _____________________________________\n ");
    printf("|  1. Caffe' ---> 70 cent                            |\n");         
    printf("|  2. The' ---> 50 cent                              |\n");           
    printf("|  3. Cioccolata ---> 100 cent                    |\n");    
    printf("|  4. Cappuccino ---> 125 cent                   |\n");    
    printf("|  5. Macchiatone ---> 90 cent                   |\n");    
    printf(" ______________________________________\n");
    printf("Selezionare il prodotto desiderato\n");
    scanf("%d",& P);
    while(P!=1 && P!=2 && P!=3 && P!=4 && P!=5)
    {
    printf("Riselezionare prodotto, scelta errata\n");
    scanf("%d",& P);
    }
    switch(P)
    {
    case 1:
    {
    printf("Lei ha selezionato un Caffe'\n");
    Pr=70;
    Imp=0;
    while(Imp<Pr)
    {
      printf("Inserire la moneta\n");
      scanf("%d",&MON);
      while(MON!=1 && MON!=5 && MON!=10 && MON!=20 && MON!=50)
      {
      printf("Questo distributore accetta solo 1, 5, 10, 20, 50 centesimi\n");
      printf("Inserire la moneta\n");
      scanf("%d",&MON);  
      }
      Imp=Imp+MON;
      DIF=Pr-Imp;
      printf("Mancano %d centesimi\n",DIF);
    
    
    }
      RT=Imp-Pr;
      RC=RT/5;
      RU=RT-(RC*5);
      printf("Il resto e' di %d centesimi, %d monete da 5 centesimi e %d monete da 1 centesimo\n",RT,RC,RU); 
      system("PAUSE");    
      return 0;
    }
    break;
    
    
    case 2:
    {
    printf("Lei ha selezionato un The'");
    Pr=50;
    Imp=0;
    while(Imp<Pr)
    {
      printf("Inserire la moneta\n");
      scanf("%d",&MON);
      while(MON!=1 && MON!=5 && MON!=10 && MON!=20 && MON!=50)
      {
      printf("Questo distributore accetta solo 1, 5, 10, 20, 50 centesimi\n");
      printf("Inserire la moneta\n");
      scanf("%d",&MON);  
      }
      Imp=Imp+MON;
      DIF=Pr-Imp;
      printf("Mancano %d centesimi\n",DIF);
    
    
    }
      RT=Imp-Pr;
      RC=RT/5;
      RU=RT-(RC*5);
      printf("Il resto e' di %d centesimi, %d monete da 5 centesimi e %d monete da 1 centesimo\n",RT,RC,RU); 
      system("PAUSE");    
      return 0;
    }
    break;
    
    
    case 3:
    {
    printf("Lei ha selezionato un cioccolata");
    Pr=100;
    Imp=0;
    while(Imp<Pr)
    {
      printf("Inserire la moneta\n");
      scanf("%d",&MON);
      while(MON!=1 && MON!=5 && MON!=10 && MON!=20 && MON!=50)
      {
      printf("Questo distributore accetta solo 1, 5, 10, 20, 50 centesimi\n");
      printf("Inserire la moneta\n");
      scanf("%d",&MON);  
      }
      Imp=Imp+MON;
      DIF=Pr-Imp;
      printf("Mancano %d centesimi\n",DIF);
    
    
    }
      RT=Imp-Pr;
      RC=RT/5;
      RU=RT-(RC*5);
      printf("Il resto e' di %d centesimi, %d monete da 5 centesimi e %d monete da 1 centesimo\n",RT,RC,RU); 
      system("PAUSE");    
      return 0;
    }
    break;
    
    
    case 4:
    {
    printf("Lei ha selezionato un cappuccino");
    Pr=125;
    Imp=0;
    while(Imp<Pr)
    {
      printf("Inserire la moneta\n");
      scanf("%d",&MON);
      while(MON!=1 && MON!=5 && MON!=10 && MON!=20 && MON!=50)
      {
      printf("Questo distributore accetta solo 1, 5, 10, 20, 50 centesimi\n");
      printf("Inserire la moneta\n");
      scanf("%d",&MON);  
      }
      Imp=Imp+MON;
      DIF=Pr-Imp;
      printf("Mancano %d centesimi\n",DIF);
    
    
    }
      RT=Imp-Pr;
      RC=RT/5;
      RU=RT-(RC*5);
      printf("Il resto e' di %d centesimi, %d monete da 5 centesimi e %d monete da 1 centesimo\n",RT,RC,RU); 
      system("PAUSE");    
      return 0;
    }
    break;
    
    
    case 5:
    {
    printf("Lei ha selezionato un macchiatone");
    Pr=90;
    Imp=0;
    while(Imp<Pr)
    {
      printf("Inserire la moneta\n");
      scanf("%d",&MON);
      while(MON!=1 && MON!=5 && MON!=10 && MON!=20 && MON!=50)
      {
      printf("Questo distributore accetta solo 1, 5, 10, 20, 50 centesimi\n");
      printf("Inserire la moneta\n");
      scanf("%d",&MON);  
      }
      Imp=Imp+MON;
      DIF=Pr-Imp;
      printf("Mancano %d centesimi\n",DIF);
    
    
    }
      RT=Imp-Pr;
      RC=RT/5;
      RU=RT-(RC*5);
      printf("Il resto e' di %d centesimi, %d monete da 5 centesimi e %d monete da 1 centesimo\n",RT,RC,RU); 
      system("PAUSE");    
      return 0;
    }
    break;
    }
     
      system("PAUSE");    
      return 0;
    }
    adesso il programma funziona alla perfezione ma ce un unica imperfezione, una volta ragiunto l'importo del prezzo e quindi finita la procedure di immisione delle monete, se ad esempio ho inserito un numero di cent maggiore del prezo e quindi mi dovra dare il resto, il messaggio di output che mi dice ogni volta quanti centesimi mancano non si ferma a 0 ma va sotto lo 0, cioe al posto di dirmi "Mancano 0 centesimi" "Il resto e' di TOT centesimi, TOT monete da 5 centesimi e TOT monete da 1 centesimo" mi dice "Mancano -X centesimi" "Il resto e' di TOT centesimi, TOT monete da 5 centesimi e TOT monete da 1 centesimo"
    qualcuno saprebbe come risolvere questo problema?

    Spero che qualcuno mi risponda, mi servirebe entro le 12 di sta serra.

    Grz in anticipo.

    PS: il codice e lo stesso in tutti i casi quindi basta che leggiate solo il primo.
    Ultima modifica di MItaly; 24-11-2013 a 19:54 Motivo: Aggiunti tag CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.