Oppure

Loading
06/07/10 18:15
Bladex
Mi date una mano con questo programma?... :hail::hail:
8-|
Devo simulare la gestione di uno smaltitore di rifiuti di 5 tipi di prodotti.
Ogni prodotto ha nome, codice e prezzo.In input si prende il budget iniziale..
Poi l'utente deve inserire un prodotto da smaltire e verificare se ci sono soldi a sufficienza per smaltire il prodotto.
Il programma deve verificare inoltre se è possibile inserire il prodotto scelto, dato che il massimo numero di prodotti per un singolo tipo è di 20.
Ed a fine giornata bisogna visualizzare un elenco dei prodotti riciclati per ogni categoria.
#include <stdio.h>
int main ()
{
  int n,x,s=0,u=0,c=0,v=0,p=0,i=0;
  float budget;

  struct rifiuti
  {
    char nome[15];
    char codice[5];
    float prezzo;
   } secco={"Secco","01",30.0},
     umido={"Umido","02",22.5},
     carta={"Carta","03",18.5},
     vetro={"Vetro","04",25.0},
     plastica={"Plastica","05",35.0};

printf("Inserire il budget iniziale : ");
scanf("%f",&budget);


printf("Quanti prodotti intendi inserire nel corso della sessione di riciclo? : ");
scanf("%d",&n);


printf("Elenco dei prodotti che e' possibile riciclare : \n");
printf(" %s ",secco.codice);
printf("%s",secco.nome);
printf(" %1.f\n",secco.prezzo);
printf(" %s ",umido.codice);
printf("%s",umido.nome);
printf(" %1.f\n",umido.prezzo);
printf(" %s ",carta.codice);
printf("%s",carta.nome);
printf(" %1.f\n",carta.prezzo);
printf(" %s ",vetro.codice);
printf("%s",vetro.nome);
printf(" %1.f\n",vetro.prezzo);
printf(" %s ",plastica.codice);
printf("%s",plastica.nome);
printf(" %1.f\n",plastica.prezzo);

for (i=1;i<=n;i++)
{
    printf("Selezionare il codice del prodotto da riciclare\n");
    scanf("%d",&x);
      switch (x){
        case 1: do {
        printf("Hai scelto di riciclare il secco, ora hai a disposizione %f\n",budget-secco.prezzo);
        s++;
        budget= budget-secco.prezzo;}
        while (s<=20 || budget>secco.prezzo);
        break;
        case 2: do {
        printf("Hai scelto di riciclare l'umido, ora hai a disposizione %f\n",budget-umido.prezzo);
        u++;
        budget= budget-umido.prezzo;}
        while (u<=20 || budget>secco.prezzo);
        break;
        case 3: do {
        printf("Hai scelto di riciclare la carta, ora hai a disposizione %f\n",budget-carta.prezzo);
        c++;
        budget= budget-carta.prezzo;}
        while (c<=20 || budget>secco.prezzo);
        break;
        case 4: do{
        printf("Hai scelto di riciclare il vetro, ora hai a disposizione %f\n",budget-vetro.prezzo);
        v++;
        budget= budget-vetro.prezzo;}
        while (v<=20 || budget>secco.prezzo);
        break;
        case 5: do{
        printf("Hai scelto di riciclare la plastica, ora hai a disposizione %f\n",budget-plastica.prezzo);
        p++;
        budget= budget-plastica.prezzo;}
        while (p<=20 || budget>secco.prezzo);
        break;
       default: printf("Hai sbagliato l'inserimento, riprova");}
}

printf("Sessione finita");
}


Il do while nel case è sbagliato.. :yup:
Quando si seleziona un prodotto ripete il ciclo per 20 volte..
mentre io volevo che ripetesse le istruzioni nel caso in cui si seleziona quel prodotto..
Quella parte non riesco a capire come impostarla...
Ringrazio tutti anticipatamente ;)
Ultima modifica effettuata da Bladex 06/07/10 18:36
aaa
06/07/10 18:27
qualcuno
Bladex: devi specificare gli errori che ti da il programma(comportameno anomalo, eventuali errori di compilazione, etc..). Non si capisce se il programma funziona oppure no, se hai riscontrato anomalie nel funzionamento(e in tal caso esplicitale direttamente fornendo più dettagli possibili), etc...
Inoltre ricordati di racchiudere il codice tra i tag code
aaa
09/07/10 18:41
Bladex
Con quel do while volevo che ogni volta che si selezionava il prodotto ripeteva l'incremento del contatore finche non si arrivava a 20..mentre mandandolo in esecuzione lo ripete direttamente 20 volte..
Come potrei fare?...
Grazie.
aaa