c++ Getraenkeautomat
-
Hallo,
würde mich freuen wenn Ihr mir hierbei auf die Sprünge helfen würdet. Ich sitze seit Tagen vor einer Aufgabe und ich komm nicht weiter. Es geht hier um ein Getränkeautomat der so verändert werden soll, dass vor der Berechnung des Gesamtpreises geprüft wird, ob noch genügend Flaschen des gewünschten Getränks vorhanden sind. Wenn nicht genügen Flaschen vorhanden sind, muss der Gesamtpreis aus der noch maximal verfügbaren Anzahl Flaschen berechnet werden.
Nun geh ich mal nicht davon aus, dass Ihr meine Aufgabe einfach so löst. Das erwarte ich auch gar nicht . Bitte gebt mir ein Anahltspunkt wie und wo ich ansetzen soll um die Aufgabe zu lösen.
Hier ist der Getränkeautomat:
#include <iostream> #include <cmath> using namespace std; //die Klasse getraenke class getraenke { public: //die Attribute string getraenk[3]; int anzahlFlaschen[3]; int preisProFlasche; //die Methoden //der Konstruktor getraenke(int anzahl1, int anzahl2, int anzahl3); //der Destruktor ~getraenke(); }; getraenke::getraenke(int anzahl1, int anzahl2, int anzahl3) { //die Getraenke eintragen getraenk[0]="Limonade"; getraenk[1]="Wasser"; getraenk[2]="Bier"; //die Anzahl festlegen anzahlFlaschen[0]=anzahl1; anzahlFlaschen[1]=anzahl2; anzahlFlaschen[2]=anzahl3; } getraenke::~getraenke() { cout<<"Eine Instanz der Klasse Getraenke wurde zerstört."<<endl; } //die Vereinbarung der Klasse muenzeinheit class muenzeinheit { //die Attribute int betrag; int nochZuZahlen; int rueckgeld; //die Methoden public: //der Konstruktor muenzeinheit(); //der Destruktor ~muenzeinheit(); void muenzenAnnehmen(int wert); int rueckgeldGeben(); //zum Setzen des Betrags void setBetrag(int preis); //zum Abfragen des noch zu zahlenden Betrags int getnochZuZahlen(); }; muenzeinheit::muenzeinheit() { betrag = 0; nochZuZahlen = 0; rueckgeld = 0; } muenzeinheit::~muenzeinheit() { cout << "Eine Instanz der Klasse muenzeinheit wurde zerstoert." << endl; } void muenzeinheit::muenzenAnnehmen(int wert) { //den eingeworfenen Betrag abziehen nochZuZahlen = nochZuZahlen - wert; } int muenzeinheit::rueckgeldGeben() { //den absoluten Betrag von nochZuZahlen als Rückgeld liefern rueckgeld = abs(nochZuZahlen); return rueckgeld; } void muenzeinheit::setBetrag(int preis) { betrag = preis; nochZuZahlen = betrag; } int muenzeinheit::getnochZuZahlen() { return nochZuZahlen; } //die Vereinbarung der Klasse getraenkeautomat class getraenkeautomat { //die Attribute bool kuehlung; //jetzt ist die Münzeinheit Teil des Getränkeautomaten muenzeinheit *zahlomat; getraenke* getraenkomat; public: //die Methoden //der Konstruktor //übergeben werden drei int-Typen für die Anzahl und ein Zeiger auf die Klasse muenzeinheit getraenkeautomat(muenzeinheit *tempZahlomat,getraenke* tempgetraenkomat); //der Destruktor ~getraenkeautomat(); int getraenkeWaehlen(); void getraenkAusgeben(int anzahl, int getraenkeIndex); void kuehlen(bool anaus); }; getraenkeautomat::getraenkeautomat(muenzeinheit *tempZahlomat,getraenke* tempgetraenkomat) { //die Kühlung ist aus kuehlung = false; //die Instanz der Münzeinheit wird zugewiesen zahlomat = tempZahlomat; getraenkomat = tempgetraenkomat; } getraenkeautomat::~getraenkeautomat() { cout << "Eine Instanz der Klasse getraenkeautomat wurde zerstoert." << endl; } int getraenkeautomat::getraenkeWaehlen() { int auswahl, anzahl; //die Auswahl cout << "Bitte waehlen Sie ein Getraenk: " << endl; cout << "Es gibt folgende Auswahl: " << endl; for (int index = 0; index < 3; index++) cout << index+1 << " - " << getraenkomat->getraenk[index] << endl; // es wird geprüft ob die Eingabe richtig ist do{ cout << "Bitte waehlen Sie Ihr Getraenk (Nr 1-3): "; cin >> auswahl; }while(auswahl>3); //gibt es noch Flaschen vom gewählten Getränk? if (getraenkomat->anzahlFlaschen[auswahl-1] != 0) { //das Getränk ausgeben cout << "Wie viele Flaschen moechten Sie? "; cin >> anzahl; //erst muss bezahlt werden //der Preis 10 ist fest vorgegeben cout << "Sie muessen " << anzahl * 10 << " Cent bezahlen." << endl; zahlomat->setBetrag(anzahl * 10); do { cout << "Es fehlen noch " << zahlomat->getnochZuZahlen() << " Cent." << endl; zahlomat->muenzenAnnehmen(3); } while (zahlomat->getnochZuZahlen() >0); //das Getränk ausgeben auswahl = auswahl - 1; getraenkAusgeben(anzahl, auswahl); } else { cout << "Das gewaehlte Getraenk ist leider nicht mehr vorhanden." << endl; auswahl = -1; } return auswahl; } void getraenkeautomat::getraenkAusgeben(int anzahl, int getraenkeIndex) { //gibt es noch genügend Flaschen? if (anzahl <= getraenkomat->anzahlFlaschen[getraenkeIndex]) { cout << "Sie erhalten " << anzahl << " Flasche(n) " << getraenkomat->getraenk[getraenkeIndex] << endl; getraenkomat->anzahlFlaschen[getraenkeIndex] = getraenkomat->anzahlFlaschen[getraenkeIndex] - anzahl; } else { cout << "Es sind nur noch " << getraenkomat->anzahlFlaschen[getraenkeIndex] << " Flasche(n) " << getraenkomat->getraenk[getraenkeIndex] << " vorhanden. "; cout << "Sie erhalten den Rest." << endl; getraenkomat->anzahlFlaschen[getraenkeIndex] = 0; } //Geld zurückgeben cout << "Sie erhalten " << zahlomat->rueckgeldGeben() << " Cent zurueck." << endl; } void getraenkeautomat::kuehlen(bool anaus) { if (anaus == true) { kuehlung = true; cout << "Die Kuehlung ist eingeschaltet. " << endl; } else { kuehlung = false; cout << "Die Kuehlung ist ausgeschaltet. " << endl; } } int main() { int auswahl; //Instanz erzeugen //der Zeiger auf die Klasse getraenkeautomat *automat; //die Münzeinheit erzeugen getraenke *getraenkomat1 = new getraenke(10,20,30); muenzeinheit *einheit = new muenzeinheit(); //die Münzeinheit wird jetzt übergeben automat = new getraenkeautomat(einheit,getraenkomat1); //ein Getränk auswählen do { auswahl = automat->getraenkeWaehlen(); } while (auswahl == -1); //die Instanzen freigeben delete(automat); return 0; }
-
Möglicherweise hilft dir jemand, wenn du eine Frage stellst.
-
Sind die Klassengerüste so fest vorgegeben oder darf das alles verändert werden?
-
daddy_felix schrieb:
Sind die Klassengerüste so fest vorgegeben oder darf das alles verändert werden?
Tob dich aus!
-
manni66 schrieb:
Möglicherweise hilft dir jemand, wenn du eine Frage stellst.
Also meine Frage ist wo der Ansatz ist um die Aufgabe zu lösen. Wahrscheinlich gibt es viele. Aber ich steh auf nem riesen Schlauch von dem ich nicht runter komm!
-
hagbartceline9383 schrieb:
manni66 schrieb:
Möglicherweise hilft dir jemand, wenn du eine Frage stellst.
Also meine Frage ist wo der Ansatz ist um die Aufgabe zu lösen. Wahrscheinlich gibt es viele. Aber ich steh auf nem riesen Schlauch von dem ich nicht runter komm!
Was für einen Ansatz soll es denn da noch geben? Den Satz kann man direkt von Deutsch in C++ übersetzen.
-
hagbartceline9383 schrieb:
manni66 schrieb:
Möglicherweise hilft dir jemand, wenn du eine Frage stellst.
Also meine Frage ist wo der Ansatz ist um die Aufgabe zu lösen. Wahrscheinlich gibt es viele. Aber ich steh auf nem riesen Schlauch von dem ich nicht runter komm!
Ich schaue mir ab und an Informatikvorlesungen an und dort wurde so etwas mit endlichen Automaten sehr elegant gelöst. Schau dir einfach mal so ein paar Vorlesungen zu Algorithmen an. Das ist wie Video2Brain und meist total einfach. Manchmal sind auch Übungsblätter mit dabei, die dann kurz in der nächsten Vorlesung besprochen werden. Alles echt easy zu verstehen, auch ohne ein Abi zu haben. Früher habe ich mir das Wissen allein durch Fachbücher rein geprügelt, aber dank Online-Vorlesung bekommt man echt alles schön vorgekaut. Hat was von IT für Dummies.
-
Wo siehst du dir die Vorlesungen an? Kostet das was?
-
where schrieb:
Wo siehst du dir die Vorlesungen an? Kostet das was?
Entfuehr nicht das Thema! Die offensichtliche Antwort ist doch Youtube oder andere per Google findbare Seiten (die guten sind natuerlich auf Englisch!). Ob das was kostet ist fast eine philosophische Frage. Wenn ein Gut scheinbar nichts kostet, dann ist die gehandelte Ware in Wirklichkeit oft man selbst.
-
where schrieb:
Wo siehst du dir die Vorlesungen an? Kostet das was?
Ne, kostet nichts, außer Interesse an Wissen. Du wirst das aufsaugen wie ein trockener Schwamm. Es ist alles total einfach erklärt, wirklich für den letzten Menschen.
-
Danke für die Hilfestellung. Habe die Aufgabe gerade gelöst. Viele Grüße
-
IDEFinder schrieb:
where schrieb:
Wo siehst du dir die Vorlesungen an? Kostet das was?
Ne, kostet nichts, außer Interesse an Wissen. Du wirst das aufsaugen wie ein trockener Schwamm. Es ist alles total einfach erklärt, wirklich für den letzten Menschen.
Vielen Dank für den Link IDEFinder.
Hast du auch Vorlesungsaufnahmen über C++ parat?