View Full Version : [c++]programma per dare il resto!
stopper11
28-11-2011, 15:54
ciao a tutti ho un compito da fare per scuola che è il seguente:
avere un importo da pagare, la somma inserita e tornare il resto a 50 20 e 10 cent
ho fatto il seguente programma
#include<iostream.h>
float imp, pag, resto, m50, m20, m10;
int r50=0, r20=0, r10=0;
main()
{
m50=0.5;
m20=0.2;
m10=0.1;
cout<<"importo da pagare: ";cin>>pag;
cout<<"importo inserito: ";cin>>imp;
resto=(imp-pag);
cout<<"Resto: "<<resto<<endl;
while(resto>=m50)
{
if(resto>=m50)
{r50=r50+1;
resto=resto-m50;}
}
cout<<resto<<endl;
while(resto>=m20)
{
if(resto>=m20)
{r20=r20+1;
resto=resto-m20;}
}
cout<<resto<<endl;
if (resto==m10)
{r10=r10+1;
resto=resto-m10;}
cout<<resto<<endl;
cout<<r50<<" monete da 50 cent."<<endl;
cout<<r20<<" monete da 20 cent."<<endl;
cout<<r10<<" monete da 10 cent."<<endl;
system("pause");
}
il controllo sui 50 cent lo fa sempre giusto ma sui 20 e 10 nn entra come posso risolvere? grz a tutti
Scritto con il tag CODE è più leggibile:
#include<iostream.h>
float imp, pag, resto, m50, m20, m10;
int r50=0, r20=0, r10=0;
main()
{
m50=0.5;
m20=0.2;
m10=0.1;
cout<<"importo da pagare: ";cin>>pag;
cout<<"importo inserito: ";cin>>imp;
resto=(imp-pag);
cout<<"Resto: "<<resto<<endl;
while(resto>=m50)
{
if(resto>=m50)
{
r50=r50+1;
resto=resto-m50;
}
}
cout<<resto<<endl;
while(resto>=m20)
{
if(resto>=m20)
{
r20=r20+1;
resto=resto-m20;
}
}
cout<<resto<<endl;
if (resto==m10)
{
r10=r10+1;
resto=resto-m10;
}
cout<<resto<<endl;
cout<<r50<<" monete da 50 cent."<<endl;
cout<<r20<<" monete da 20 cent."<<endl;
cout<<r10<<" monete da 10 cent."<<endl;
system("pause");
}
intanto scrivere:
while(resto>=m50)
{
if(resto>=m50)
{
r50=r50+1;
resto=resto-m50;
}
}
è equivalente a scrivere:
while(resto>=m50)
{
r50=r50+1;
resto=resto-m50;
}
L'if all'interno è del tutto inutile.
Il programma mi sembra corretto (oppure anche a me sfugge qualcosa :D )
Sicuro che legga bene dall'input i valori pag e imp? Compresa la virgola?
stopper11
28-11-2011, 21:16
ho provato in tutti i modi ma non capisco cosa c sia di sbagliato ho dato una sistemata ed è venuto così ma ora sbaglia il controllo sui 10 centesimi :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro:
#include<iostream.h>
float imp, pag, resto, m50, m20, m10;
int r50=0, r20=0, r10=0;
main()
{
m50=0.5;
m20=0.2;
m10=0.1;
cout<<"importo da pagare: ";cin>>pag;
cout<<"importo inserito: ";cin>>imp;
resto=(imp-pag);
cout<<"Resto: "<<resto<<endl;
while(resto>0)
{
if(resto>=m50)
{r50=r50+1;
resto=resto-m50;}
if((resto<m50)&&(resto>=m20))
{r20=r20+1;
resto=resto-m20;}
if (resto<=m20)
{r10=r10+1;
resto=resto-m10;}
}
cout<<r50<<" monete da 50 cent."<<endl;
cout<<r20<<" monete da 20 cent."<<endl;
cout<<r10<<" monete da 10 cent."<<endl;
system("pause");
}
ho provato in tutti i modi ma non capisco cosa c sia di sbagliato ho dato una sistemata ed è venuto così ma ora sbaglia il controllo sui 10 centesimi :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro:
if((resto<m50)&&(resto>=m20))
{r20=r20+1;
resto=resto-m20;}
if (resto<=m20)
{r10=r10+1;
resto=resto-m10;}
Se il resto è 20centesimi soddisfa entrambe le condizioni.
Dovresti scrivere
if (resto<m20) e non if (resto<=m20)
oppure
if (resto<=m10)
stopper11
29-11-2011, 12:08
funziona solo con le variabili in long double ma float non funziona certe volte va sotto con il resto oppure da una sottrazione tipo 0.60-0.50 mi da 0,0999999
#include<iostream.h>
float imp, pag, resto, m50, m20, m10;
int r50=0, r20=0, r10=0;
main()
{
m50=0.5;
m20=0.2;
m10=0.1;
cout<<"importo da pagare: ";cin>>pag;
cout<<"importo inserito: ";cin>>imp;
resto=(imp-pag);
cout<<"Resto: "<<resto<<endl;
while(resto>0)
{
if(resto>=m50)
{r50=r50+1;
resto=resto-m50;
cout<<resto<<endl;}
else
if(resto>m10)
{r20=r20+1;
resto=resto-m20;
cout<<resto<<endl;}
else
if
{r10=r10+1;
resto=resto-m10;
cout<<resto<<endl;}
}
cout<<r50<<" monete da 50 cent."<<endl;
cout<<r20<<" monete da 20 cent."<<endl;
cout<<r10<<" monete da 10 cent."<<endl;
system("pause");
}
:mc: :mc:
Usa double, non ha alcun senso usare float.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.