Gwynbleidd19
Nuovo Utente
- Messaggi
- 11
- Reazioni
- 0
- Punteggio
- 21
Salve a tutti, è da stamattina che tento di comprendere il motivo per cui questo programma di cui vi lascio il codice + consegna sotto non funziona. Ho eseguito anche la tavola di verità e risulta corretta, mentre il codice in C++ non ne vuole sapere di funzionare.
Il problema risiede nella procedura pagamento, praticamente quello che ho pensato è di andare a sottrarre i valori dell'array soldi al resto finché non diventa zero. Così facendo il resto diventa 0 e nel mentre ad ogni ciclo stampo quale moneta/banconota la macchina sta rilasciando all'utente.
Il problema è che quando il resto diventa 0.1 non me lo sottrae con il 0.1 nell'array.
Spero vivamente in un vostro aiuto. Grazie in anticipo.
Il problema risiede nella procedura pagamento, praticamente quello che ho pensato è di andare a sottrarre i valori dell'array soldi al resto finché non diventa zero. Così facendo il resto diventa 0 e nel mentre ad ogni ciclo stampo quale moneta/banconota la macchina sta rilasciando all'utente.
Il problema è che quando il resto diventa 0.1 non me lo sottrae con il 0.1 nell'array.
Spero vivamente in un vostro aiuto. Grazie in anticipo.
Codice:
Questo è il programma:
/* Costruire tramite C++ un software che permette di gestire un distributore
automatico di qualsiasi tipo: gelati, snack, caffé, bibite ecc...
Il distributore accetta tutte le monete da 10 centesimi a 2 euro e le banconote da
5, 10 e 20 euro.
Scegliere 5 referenze (di prova) e impostare un prezzo di vendita per ognuna. Quando un cliente
acquista una referenza viene chiesto di inserire monete o banconote, e dopo l'erogazione
vengano calcolate, eventualmente, il taglio delle monete da restituire come resto.
Consegnare inoltre la documentazione. */
#include <iostream>
#include <string>
using namespace std;
float soldi [8]={0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0};
struct Prodotto {
string nome;
float prezzo;
};
pagamento (float prezzo, float pp)
{
double re=pp-prezzo;
do
{
for (int i=7; i>=0; i--)
{
if (soldi[i]<=re)
{
cout<<"Ti do euro: "<<soldi[i]<<endl;
re=re-soldi[i];
}
}
}
while (re!=0);
cout<<re<<endl;
}
int main ()
{
int r, pi;
float pp;
Prodotto p1, p2, p3, p4, p5;
p1.nome="Gelato";
p1.prezzo=1;
p2.nome="Acqua";
p2.prezzo=0.5;
p3.nome="Coca-Cola";
p3.prezzo=1.5;
p4.nome="Cicche";
p4.prezzo=0.2;
p5.nome="Merendina";
p5.prezzo=1.9;
do {
cout<<"Digita 1 per acquistare un prodotto\n2 per uscire dal programma."<<endl;
cin>>r;
switch (r)
{
case 1:
cout<<"Digita 1 per acquistare "<<p1.nome<<"\n2 per acquistare "<<p2.nome<<"\n3 per acquistare "<<p3.nome<<"\n4 per acquistare "<<p4.nome<<"\ne 5 per acquistare "<<p5.nome<<endl;
cin>>pi;
switch (pi)
{
case 1:
cout<<"Inserisci euro: "<<p1.prezzo<<": ";
cin>>pp;
pagamento (p1.prezzo, pp);
system ("pause");
system ("cls");
break;
case 2:
cout<<"Inserisci euro: "<<p2.prezzo<<": ";
cin>>pp;
pagamento (p2.prezzo, pp);
system ("pause");
system ("cls");
break;
case 3:
cout<<"Inserisci euro: "<<p3.prezzo<<": ";
cin>>pp;
pagamento (p3.prezzo, pp);
system ("pause");
system ("cls");
break;
case 4:
cout<<"Inserisci euro: "<<p4.prezzo<<": ";
cin>>pp;
pagamento (p4.prezzo, pp);
system ("pause");
system ("cls");
break;
case 5:
cout<<"Inserisci euro: "<<p5.prezzo<<": ";
cin>>pp;
pagamento (p5.prezzo, pp);
system ("pause");
system ("cls");
break;
}
break;
case 2:
cout<<"Sto uscendo..."<<endl;
break;
}
}
while (r!=2);
system ("pause");
return 0;
}
Ultima modifica: