Esercizio 14 – Erogazione del resto
- Gennaio 27, 2010
- by
- Donatantonio
Scrivere un programma che calcoli il resto in monete (2 euro, 1 euro, 50/100, 20/100,
10/100, 5/100, 2/100, 1/100) della somma corrisposta dal cliente. L’input sarà costituito da due importi: il prezzo da pagare e la somma corrisposta dal cliente.
Realizzare la classe Cashier per la gestione dei diversi tagli di moneta e una classe Resto che implementi l’erogazione del resto.
La classe Cashier.java
public class Cashier
{
double resto;
// Metodo Costruttore vuoto
public Cashier()
{
}
// Metodo che restituisce una moneta da 2 Euro
public double dai2Euro()
{
return 2;
}
// Metodo che restituisce una moneta da 1 Euro
public double dai1Euro()
{
return 1;
}
// Metodo che restituisce una moneta da 50 centesimi
public double dai50Cent()
{
return 0.50;
}
// Metodo che restituisce una moneta da 20 centesimi
public double dai20Cent()
{
return 0.20;
}
// Metodo che restituisce una moneta da 10 centesimi
public double dai10Cent()
{
return 0.10;
}
// Metodo che restituisce una moneta da 5 centeimi
public double dai5Cent()
{
return 0.05;
}
// Metodo che restituisce una moneta da 2 centesimi
public double dai2Cent()
{
return 0.02;
}
// Metodo che restituisce una moneta da 1 centesimo
public double dai1Cent()
{
return 0.01;
}
}
La classe Resto.java:
import java.util.Scanner;
public class Resto
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
// Prendo in input la somma da pagare
System.out.println("Dammi il prezzo : ");
double p = in.nextDouble();
// Prendo in input la somma emessa per il pagamento
System.out.println("Dammi la somma di denaro");
double s = in.nextDouble();
// Creo un nuovo oggetto Cashier per gestire il resto
Cashier a = new Cashier();
System.out.println("Ecco il resto in monete: ");
// Verifico che la somma emessa sia >= del prezzo del prodotto
if (s >= p)
{
// Calcolo il resto
double r = s - p;
double re = 0 ;
// Emetto se necessario moneta da 2 Euro
while (r >= 2)
{
System.out.println(a.dai2Euro());
r = r - a.dai2Euro();
re = re + a.dai2Euro();
}
// Emetto se necessario moneta da 1 Euro
while (r >= 1)
{
System.out.println(a.dai1Euro());
r = r - a.dai1Euro();
re = re + a.dai1Euro();
}
// Emetto se necessario moneta da 50 centesimi
while (r >= 0.50)
{
System.out.println(a.dai50Cent());
r = r - a.dai50Cent();
re = re + a.dai50Cent();
}
// Emetto se necessario moneta da 20 centesimi
while (r >= 0.20)
{
System.out.println(a.dai20Cent());
r = r - a.dai20Cent();
re = re + a.dai20Cent();
}
// Emetto se necessario moneta da 10 centesimi
while (r >= 0.10)
{
System.out.println(a.dai10Cent());
r = r - a.dai10Cent();
re = re + a.dai10Cent();
}
// Emetto se necessario moneta da 5 centesimi
while (r >= 0.05)
{
System.out.println(a.dai5Cent());
r = r - a.dai5Cent();
re = re + a.dai5Cent();
}
// Emetto se necessario moneta da 2 centesimi
while (r >= 0.02)
{
System.out.println(a.dai2Cent());
r = r - a.dai2Cent();
re = re + a.dai2Cent();
}
// Emetto se necessario moneta da 1 centesimo
while (r >= 0.01)
{
System.out.println(a.dai1Cent());
r = r - a.dai1Cent();
re = re + a.dai1Cent();
}
// Stampo a video il resto
System.out.print("Per un totale di : ");
System.out.println(" Euro " + re);
}
}
}

