Fabio Donatantonio

Resta connesso

Software Developer / Adjunct Professor

Esercizio 14 – Erogazione del resto

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);

    }
  }
}
Fabio Donatantonio

Fabio Donatantonio. Analista e sviluppatore full-stack di applicazioni web in linguaggio PHP. Professore a Contratto per le cattedre di Fondamenti di Informatica e Archivistica Digitale presso Università degli Studi eCampus. Dal 2008 curatore del sito www.donatantonio.net, da sempre appassionato di programmazione, mare, sigari e... musica.

Leave a reply

Your email address will not be published. Required fields are marked *

 

Didattica

Università degli Studi eCampus
Data Evento
09/02/2021
14:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Letteratura, Lingua e Cultura Italiana - Lettere
09/02/2021
14:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere
09/02/2021
17:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere
09/02/2021
17:30
Esame Abilità Informatiche e Telematiche - Cds Letteratura, Arte, Musica e Spettacolo - Lettere
Risorse
Guida HTML/CSS per principianti (link)
Introduzione agli ipertesti (link)
Esercizi guidati in Java (link)
Intelligenza artificiale (link)
Libri
Fondamenti di Informatica (2011) (link)
Informatica per le Scienze Umane (2011) (link)
Fondamenti di Informatica (2014) (link)
Pagina Docente
uniecampus.it - Scheda Docente (link)
Contatti
fabio.donatantonio[at]uniecampus.it

JWhisper, sviluppato presso il Dipartimento di Informatica Applicata dell'Università degli Studi di Salerno:

Stay Connected

Twitter

Le mie foto

Foto di Fabio Donatantonio
×