Untitled
unknown
c_cpp
4 years ago
2.7 kB
5
Indexable
#include <iostream> using namespace std; /*3) Il gioco delle due bottiglie Il gioco delle due bottiglie è questo: Si hanno due bottiglie, una contiene 5 litri esatti d'acqua e l'altra 3. Le bottiglie possono essere riempite al massimo o svuotate completamente. Si può anche travasare l'acqua contenuta in una bottiglia nell'altra, in questo caso se la seconda bottiglia contiene tutta l'acqua della prima, la prima viene svuotata completamente, altrimenti conterrà la restante parte d'acqua che non si è riusciti a travasare. Creare la classe Bottiglia che ha due variabili membro intere, la capacità massima e lo stato (che indica quanti litri d'acqua contiene). La classe non ha costruttori e ha una procedura void inizializza(int c) che prende come parametro d'ingresso la capacità e inizializza lo stato a 0. La capacità non deve essere modificata, ma solo letta, mentre lo stato può essere cambiato solo tramite le funzioni svuota(int litri) e riempi(int litri). Controllare che la capacità sia maggiore di 0 (minimo 1) e che lo stato sia sempre contenuto tra 0 e la capacità. Creare la classe gioco che contiene le due bottiglie d'acqua, tramite apposite funzioni permette all'utente di riempire e svuotare le due bottiglie. Le bottiglie devono essere modificate solo dalle funzioni svuotaBottiglia1(); svuotaBottiglia2(); riempiBottiglia1(); riempiBottiglia2(); versa2in1(); versa1in2(); Implementare anche due metodi getter per sapere quanti litri contengono entrambe le bottiglie. Sovraccaricare l'operatore di output << per stampare lo stato e la capacità di ogni bottiglia. Creare le due classi in due file differenti. */ class Bottiglia { public: void inizializza(int c) { capacitaMax = c; stato = 0; if (checkCapacitaMax() == false) cout << "Errore nella capacita' max!"; if (checkStato() == false) cout << "Errore nello stato!"; } int getCapacitaMax() { return capacitaMax; } bool checkCapacitaMax() { if (capacitaMax > 0) return true; return false; } bool checkStato() { if (stato >= 0 && stato <= capacitaMax) return true; return false; } void svuotaBottiglia() { stato = 0; } void riempiBottiglia() { stato = getCapacitaMax(); } int getStato() { return stato; } void travasa(Bottiglia& istanza1, Bottiglia&istanza2) { if (istanza1.getCapacitaMax() < istanza2.getCapacitaMax()) { istanza2.stato = istanza1.getCapacitaMax(); istanza1.stato = 0; } else { istanza2.stato = istanza2.getCapacitaMax(); istanza1.stato = (istanza1.getCapacitaMax() - istanza2.getCapacitaMax()); } } private: int capacitaMax; int stato; };
Editor is loading...