PDA

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

Mommolo
28-11-2011, 18:40
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");
}

Mommolo
28-11-2011, 21:35
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:

WarDuck
29-11-2011, 13:16
Usa double, non ha alcun senso usare float.