Eisautomat
-
Bitte... ^^
class Eisautomat{ Eisautomat(){ nt muenzen; //Anzahl eingeworfener Münzen int betrag=0; //Eingeworfener Geldbetrag int wechselgeld; //Betrag, der vom Automat insgesamt ausbezahlt werden muss int rest; // noch auszubezahlender Betrag int sorte; //Eissorte int nochmal; //Verkaufsautomat beenden? bool passend; float preise[]={99, 120, 543, 188, 64}; //Preise der Eissorten string produkte[]={"Magnum", "Magnum Deluxe", "Schokobaer", "Marzipaneis", "Eiskonfekt"}; int wert[]={1,2,5,10,20,50,100,200}; //Muenzgeldwerte int schacht[]={2,2,2,2,2,2,2,2}; //Anzahl Muenzen pro Schacht string name[]={"1 Cent", "2 Cent", "5 Cent", "10 Cent", "20 Cent", "50 Cent", "1 Euro", "2 Euro"}; do{ int i=4; int einwurf[]={0,0,0,0,0,0,0,0}; //aktueller Münzeinwurf pro Verkaufsvorgang betrag=0; cout<<"Unser Eisangebot:\n"; while (i>=0) { //Ausgabe der Eisssorten mit Preis cout<<produkte[i] <<": "<<preise[i]<<" Cent ("<<i<<")\n"; i--; } cout<<"\nBitte werfen Sie Muenzen ein.\n"; for (i=7; i>=0; i--) { //Münzeinwurf cout<<"Wieviele " <<name[i]<<"-Muenzen werfen Sie ein?"; cin>>einwurf[i]; schacht[i]=schacht[i]+einwurf[i]; betrag=betrag + einwurf[i]*wert[i]; } for (i=7; i>=0; i--) { //Ausgabe der Münzen pro Schacht cout<<"\nNoch "<<schacht[i]<< " " <<name[i]<<" Muenzen als Wechselgeld vorhanden"; } cout<<"\n\nSie haben "<<betrag<<" Cent eingeworfen\n\n"; getchar(); cout<<"Waehlen sie ihr Produkt durch Eingabe der in Klammern stehenden Zahl: "; cin >>sorte; cout<<"Ihre Wahl: "<<produkte[sorte]<<endl; getchar(); if (preise[sorte]<=betrag) { //eingeworfener Geldbetrag passt cout<<"\nEingeworfener Betrag in Ordnung"; passend = 1; wechselgeld = betrag-preise[sorte]; rest=wechselgeld; cout<<"\nIhr Produkt: "<<produkte[sorte] <<" kostet "<<preise[sorte]<<" Cent"<<endl; cout<<"Sie bekommen folgenden Wechselbetrag: "<<wechselgeld<<" Cent"<<endl; cout<<"Hier noch in Muenzen: "<<endl; for (i=7; i>=0; i--) { //Berechnung Wechselgeld muenzen=rest/wert[i]; if (schacht[i]>= muenzen) { rest=rest%wert[i]; schacht[i]-=muenzen; cout<<name[i]<<" : "<<muenzen<<endl; } } for (i=7; i>=0; i--) { //Ausgabe der Münzen pro Schacht cout<<"\nNoch "<<schacht[i]<< " " <<name[i]<<" Muenzen als Wechselgeld vorhanden"; } if (rest != 0) { //zuwenig Wechselgeld cout<<endl<<"***********************************************************************"<<endl; cout<<"Wechselgeld nicht ausreichend! Betrag bitte passend eingeben!"<<endl; cout<<"***********************************************************************"<<endl; passend = 0; } } else { //zuwenig Geld eingeworfen cout<<endl<<"***********************************************************************"<<endl; cout<<"Betrag nicht in Ordnung."<<endl<<"Es fehlen noch "<<preise[sorte]-betrag<<" Cent"<<endl; cout<<endl<<"***********************************************************************"<<endl; passend = 0; } if (!passend) { //Rückagbe der eingeworfenenen Münzen, da Verkauf nciht erfolgreich cout <<"Sie erhalten nun ihr eingeworfenes Geld zurueck"<<endl; for (i=7;i>=0; i--) { schacht[i]-=einwurf[i]; } } cout<<endl<<endl<<"Nochmal? Geben Sie die 1 ein:"; //Abfrage, ob nochmal verkauft werden soll cin>>nochmal; cout<<"\n"; }while (nochmal==1); getchar(); return 0; } } ~Eisautomat(){} }; int main(void){ Eisautomat o; return 0; }
-
Sehr Freundlich danke aber irgendwie funktioniert es nicht richtig

-
das ist ein Problem, das du selbst zu lösen hast, wenn du probleme mit objektorientiertheit hat, dann kauf diern buch, oder lass dir den stoff von irgendeinem Lehrer oder Dozenten erklären. Aber das dir irgendwer hier deine Aufgaben macht, während du selbst überhaupt kein interesse daran Zeigst, das selbt hinzubekommen, kansst du vergessen.
-
@Krux:
Absolut!
-
naja gut ok danke trotzdem
-
für 50Euro, kein Thema....
-
Wie Krux schon sagte, ist es wichtig, dass du dir selbst überlegst, welche Klassen praktisch wären und wie ihre Objekte zusammen arbeiten könnten.
Hier ist dennoch ein kleiner Vorschlag für einen Anfang:#include <iostream> #include <iomanip> #include <string> #include <vector> using namespace std; class Eis { string m_sorte; double m_preis; public: Eis(const string &sorte, double preis) : m_sorte(sorte), m_preis(preis) { } string sorte() const { return m_sorte; } double preis() const { return m_preis; } }; ostream &operator<<(ostream &ausgabestrom, const Eis &e) { return ausgabestrom << e.sorte() << ": " << setw(20 - e.sorte().size()) << setprecision(2) << setiosflags(ios::fixed) << e.preis() << " Euro\n"; } class Eisautomat { vector<Eis*> m_eis; public: Eisautomat() { eisEinfuegen("Magnum", .99); eisEinfuegen("Magnum Deluxe", 1.2); eisEinfuegen("Schoko Baer", 5.43); eisEinfuegen("Marzipaneis", 1.88); eisEinfuegen("Eiskonfekt", .64); } ~Eisautomat() { //Eis Objekte entsorgen for(vector<Eis*>::iterator eis = m_eis.begin(); eis != m_eis.end(); ++eis) delete (*eis); } void eisEinfuegen(const string &sorte, double preis) { m_eis.push_back(new Eis(sorte, preis)); } void praesentiereAngebot() const { cout << "========================================\n"; cout << "Unser Eisangebot\n\n"; for (vector<Eis*>::const_iterator eis = m_eis.begin(); eis != m_eis.end(); ++eis) cout << (**eis); cout << "========================================"; } }; int main() { Eisautomat a; a.eisEinfuegen("Flutschfinger", 1.5); a.praesentiereAngebot(); }
-
es soll ja offensichtlich objekt orientiert sein, also würd ich in der hinsicht noch mehr objektorientiertheit nutzen, polymorphie und so. auch wenns bisschen überflüssig erscheint, es soll ja was beibringen.
enum Sorte { MAGNUM, FLUTSCHFINGER, ... ; }; class Eis { int preis; Sorte sorte; std::string name; public: Sorte getSorte(); virtual std::string getName() = 0; }; class Magnum : public Eis { }; ... // noch mehr sorten class Fach { std::vector<Eis*> inhalt; public: int getAnzahl(); void removeEis(); }; class Eisautomat { std::vector<Fach> sorten; public: std::vector<Sorten> getSorten(); void removeEis(Sorte sorte); };
-
Was fürn Quatsch für jede Sorte ne Klasse ...
-
oop schrieb:
Was fürn Quatsch für jede Sorte ne Klasse ...
troll?
beispielprogramme sollen viele beispiele abgreifen. nen "eisautomat" ist nen 2 zeiler. aber halt nicht, wenns was beibringen soll.
-
das einzige was quatsch ist ist deine Aussage
-
Troll ?
Und welchen Sinn macht es für jede Eissorte ne Klasse abzuleiten ?
Beispiel hin und her ...
-
oop schrieb:
Und welchen Sinn macht es für jede Eissorte ne Klasse abzuleiten ?
Damit man in jedem Eis die passende Geschmacksrichtung implementieren kann.
-
Lol
Hat nicht jedes Eis nen anderen Geschmack ... ???
-
oop schrieb:
Lol
Hat nicht jedes Eis nen anderen Geschmack ... ???
Ein Eis hat ja nicht ein "Magnumgeschmack", sondern es gibt Krischgemack, Orange, usw. oder auch cremig, erfrischend... aber ist doch jetzt eh wurscht...