Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Programma per smaltire rifiuti
Forum - C/C++ - Programma per smaltire rifiuti

Avatar
Bladex (Normal User)
Newbie


Messaggi: 3
Iscritto: 06/07/2010

Segnala al moderatore
Postato alle 20:15
Sabato, 25/06/2011
Salve raga :k:..seguo questo sito da un pò ma non ho mai postato nel forum perchè non ho ancora le conoscenze necessarie per aiutare qualcuno 8-|
Vi scrivo perchè devo consegnare a breve un programma che simuli una macchina di smaltimento rifiuti.
La macchina deve riciclare 5 tipi di prodotti, ognuno dei quali ha un nome (carta,vetro,ecc..), il codice ed il prezzo.L'utente imposta il budget iniziale ed a fine programma bisogna fare il resoconto dei prodotti riciclati.
Deve inoltre verificare che non si riciclino più di 20 prodotti per ogni tipo ed ad ogni riciclo bisogna verificare se è sufficiente il budget..
So che probabilmente per voi è alquanto "elementare" ma io sono ancora all'inizio..
L'ho svolto in questa maniera...e visto che lo devo consegnare volevo sapere da voi se è fatto bene in questo modo,se notate errori e se si poteva fare in modo alternativo o più efficiente di questo..insomma secondo voi l'ho fatto bene?:-|
Credo giri bene e rispetti tutte le condizioni ma non mi fido di me stesso :D quindi qualsiasi suggerimento è ben accetto!
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. int main ()
  3. {
  4.   int n,x,s=0,u=0,c=0,v=0,p=0,i=0;
  5.   float budget;
  6.  
  7.   struct rifiuti
  8.   {
  9.     char nome[15];
  10.     char codice[5];
  11.     float prezzo;
  12.    } secco={"Secco","01",30.0},
  13.      umido={"Umido","02",23.0},
  14.      carta={"Carta","03",19.0},
  15.      vetro={"Vetro","04",25.0},
  16.      plastica={"Plastica","05",35.0};
  17.  
  18. printf("Inserire il budget iniziale : ");
  19. scanf("%f",&budget);
  20.  
  21.  
  22. printf("Quanti prodotti intendi inserire nel corso della sessione di riciclo? : ");
  23. scanf("%d",&n);
  24.  
  25.  
  26. printf("Elenco dei prodotti che e' possibile riciclare : \n");
  27. printf(" %s ",secco.codice);
  28. printf("%s",secco.nome);
  29. printf(" %1.f\n",secco.prezzo);
  30. printf(" %s ",umido.codice);
  31. printf("%s",umido.nome);
  32. printf(" %1.f\n",umido.prezzo);
  33. printf(" %s ",carta.codice);
  34. printf("%s",carta.nome);
  35. printf(" %1.f\n",carta.prezzo);
  36. printf(" %s ",vetro.codice);
  37. printf("%s",vetro.nome);
  38. printf(" %1.f\n",vetro.prezzo);
  39. printf(" %s ",plastica.codice);
  40. printf("%s",plastica.nome);
  41. printf(" %1.f\n",plastica.prezzo);
  42.  
  43. for (i=0;i=n;i++)
  44. {
  45.     printf("\nSelezionare il codice del prodotto da riciclare\n");
  46.     scanf("%d",&x);
  47.       switch (x){
  48.         case 1:
  49.                  if (s<20 && budget>=secco.prezzo)
  50.                  {
  51.                   printf("Hai scelto di riciclare il secco,");
  52.                   budget= budget-secco.prezzo;
  53.                   printf("ora hai a disposizione %f\n",budget);
  54.                   s++;
  55.                   printf("Sono stati inseriti %d prodotto/i di questo tipo\n",s);
  56.                  }
  57.                  else if (budget<secco.prezzo)
  58.                        printf("Budget insufficiente per questo prodotto\n");
  59.                  else if (s>=20)
  60.                        printf("*** Hai inserito troppi prodotti di questo tipo (20) ***\npuoi inserire un altro tipo di prodotto.\n");
  61.         break;
  62.         case 2:
  63.                  if (u<20 && budget>=umido.prezzo)
  64.                  {
  65.                   printf("Hai scelto di riciclare l'umido,");
  66.                   budget= budget-umido.prezzo;
  67.                   printf("ora hai a disposizione %f\n",budget);
  68.                   u++;
  69.                   printf("Sono stati inseriti %d prodotto/i di questo tipo\n",u);
  70.  
  71.                  }
  72.                  else if (budget<umido.prezzo)
  73.                        printf("Budget insufficiente per questo prodotto\n");
  74.                  else if (u>=20)
  75.                        printf("*** Hai inserito troppi prodotti di questo tipo (20) ***\npuoi inserire un altro tipo di prodotto.\n");
  76.         break;
  77.         case 3:
  78.                  if (c<20 && budget>=carta.prezzo)
  79.                  {
  80.                   printf("Hai scelto di riciclare la carta,");
  81.                   budget= budget-carta.prezzo;
  82.                   printf("ora hai a disposizione %f\n",budget);
  83.                   c++;
  84.                   printf("Sono stati inseriti %d prodotto/i di questo tipo\n",c);
  85.  
  86.                  }
  87.                  else if (budget<carta.prezzo)
  88.                        printf("Budget insufficiente per questo prodotto\n");
  89.                  else if (c>=20)
  90.                        printf("*** Hai inserito troppi prodotti di questo tipo (20) ***\npuoi inserire un altro tipo di prodotto.\n");
  91.         break;
  92.         case 4:
  93.                  if (v<20 && budget>=vetro.prezzo)
  94.                  {
  95.                   printf("Hai scelto di riciclare il vetro,");
  96.                   budget= budget-vetro.prezzo;
  97.                   printf("ora hai a disposizione %f\n",budget);
  98.                   v++;
  99.                   printf("Sono stati inseriti %d prodotto/i di questo tipo\n",v);
  100.  
  101.                  }
  102.                  else if (budget<vetro.prezzo)
  103.                        printf("Budget insufficiente per questo prodotto\n");
  104.                  else if (v>=20)
  105.                        printf("*** Hai inserito troppi prodotti di questo tipo (20) ***\npuoi inserire un altro tipo di prodotto.\n");
  106.         break;
  107.         case 5:
  108.                  if (p<20 && budget>=plastica.prezzo)
  109.                  {
  110.                   printf("Hai scelto di riciclare la plastica,");
  111.                   budget= budget-plastica.prezzo;
  112.                   printf("ora hai a disposizione %f\n",budget);
  113.                   p++;
  114.                   printf("Sono stati inseriti %d prodotto/i di questo tipo\n",p);
  115.  
  116.                  }
  117.                  else if (budget<plastica.prezzo)
  118.                        printf("Budget insufficiente per questo prodotto\n");
  119.                  else if (p>=20)
  120.                        printf("*** Hai inserito troppi prodotti di questo tipo (20) ***\npuoi inserire un altro tipo di prodotto.\n");
  121.         break;
  122.        default: printf("Hai sbagliato l'inserimento, riprova\n");}
  123.  
  124.  
  125. }
  126.  
  127.  
  128.  
  129. printf("\n\n\n*** Sessione finita!..*** \n\nDei %d prodotti da riciclare sono stati riciclati:\n %d Secco, %d Umido, %d Carta, %d Vetro, %d Plastica\n\n",n,s,u,c,v,p);
  130.  
  131. }


PM
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Up
2
Down
V
Segnala al moderatore
Postato alle 21:17
Sabato, 25/06/2011
Nel for la condizione è sbagliata:

Codice sorgente - presumibilmente Plain Text

  1. ...
  2. for(i=0;i[b]<[/b]n;i++)
  3. ...



Per il resto il programma dovrebbe funzionare, se non hai ancora fatto le funzioni è difficile migliorarlo più di così...

E' vero, non me ne ero accorto dell'errore nel for!..grazie!!... - Bladex - 25/06/11 23:14
Come creare delle funzioni l'ho fatto, ma pensavo che in questo caso fosse superfluo...o ti riferisci a funzioni gia esistenti che fanno la stessa cosa? - Bladex - 25/06/11 23:15
Ogni "case" dello switch lo potresti incorporare in una funzione unica passando per referenza il budget, la "lettera" e l'elemento della tabella. Poi per le printf o te ne freghi =) o come parametro passi anche una stringa dove scrivi manualmente secco, etc... - comina8 - 29/06/11 12:26
PS: ti chiedo scusa per l'attesa ma non avevo visto il tuo commento =) - comina8 - 29/06/11 12:28
PM
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 21:29
Sabato, 25/06/2011

Non hai usato i commenti al codice, dovresti abituarti a commentare di più
il codice non solo per gli altri ma anche per te stesso, commentare il codice
aiuta molto. :k:

In effetti devo mettere piu commenti...lo avrei fatto al momento della consegna ma è utile anche a me...grazie del suggerimento! - Bladex - 25/06/11 23:17
Come diceva il mio prof. ... tanti anni fa ... un codice scritto bene si commenta da solo :) - Goblin - 25/06/11 23:50
vero! - Qwertj - 26/06/11 09:00
secondo voi può essere un problema il fatto che quando si riciclano 20 prodotti dello stesso tipo poi se si seleziona di nuovo quel prodotto esce il messaggio ma si "perde" la possibilità di selezionare un prodotto?..la traccia non lo specifica...come potrei ovviare a non far "perdere" un prodotto? - Bladex - 26/06/11 17:54


If ok Then GOTO Avanza else GOTO Inizia

PM