10/01/17 21:48
slax_go
Ho un problema che non riesco a risolvere, il programma funziona discretamente bene per quello che voglio fare, unico problema, ho inserito un controllo che se si inserisco monete diverse da "0.10, 0.20, 0.50, 1.00, 2.00" il programma rilascia un messaggio dove dice di inserire le monete elencate prima, fin qui tutto bene, se non fosse che mi da l'inserimento sbagliato anche sulle monete 0.10 e 0.20...
#include <stdlib.h> #include <stdio.h> #include <conio.h> //Funzioni //STRUCT struct prodotti{ char nome[80]; int codice; float prezzo; int pezzi; }; //inizio programma int main(void){ float resto, m; typedef struct prodotti Prodotti; Prodotti array_prodotti[5]={{"Coca-cola", 0, 1.00, 10}, {"Acqua", 1, 0.50, 10}, {"Caffe'", 2, 0.80, 10}, {"Patatine", 3, 1.00, 10}, {"Cornetto", 4, 1.50, 10}}; printf("\t\t\t\t\tDISTRIBUTORE AUTOMATICO\t\t\t\tv1.1\n\n"); while(1){ printf("\n\nBevande Disponibili\n"); for(int i=0; i<5; i++){ printf("\n%d) %s\t%g \tEuro\t\tDisponibili ancora: %d", array_prodotti[i].codice, array_prodotti[i].nome, array_prodotti[i].prezzo, array_prodotti[i].pezzi);} printf("\n\nInserire numero della bevanda: "); int s; fflush(stdin); scanf("%d", &s); while ((s>5)||(array_prodotti[s].pezzi==0)){printf ("\nBevanda non disponibile inserire bevanda disponibile: "); scanf("%d", &s);} array_prodotti[s].pezzi=array_prodotti[s].pezzi-1; printf("\nHai selezionato %s, inserisci l'importo richiesto %g", array_prodotti[s].nome, array_prodotti[s].prezzo); printf("\nLa macchina accetta solo monete da 0.10, 0.20, 0.50, 1.00, 2.00\nImporto inserito: "); float d; fflush(stdin); scanf("%g", &d); while((d!=0.10)&&(d!=0.20)&&(d!=0.50)&&(d!=1.00)&&(d!=2.00)){printf("\nMoneta non accettata...\nInserire moneta da 0.10, 0.20, 0.50, 1.00, 2.00\n\nNuovo importo: "); scanf("%g", &d);} if(d<array_prodotti[s].prezzo){ while(d=d+m, d<array_prodotti[s].prezzo){ resto=d-array_prodotti[s].prezzo; printf("\nImporto inserito: %g\tSomma mancante: %g\n\nImporto: ", d, resto); scanf("%g", &m);}} if(d==array_prodotti[s].prezzo){printf("\n\nRilascio bevanda in corso...\nBevanda rilasciata.\n\nGrazie e Arrivederci\n\n");} if(d>array_prodotti[s].prezzo){ resto=d-array_prodotti[s].prezzo; printf("\nRilascio del resto: %g Euro\n\nRilascio bevanda in corso...\nBevanda rilasciata.\n\nGrazie e Arrivederci\n\n", resto);} } }
Ultima modifica effettuata da slax_go 10/01/17 21:49
aaa