Instanzen Einsatz in c++?



  • Hallo und Guten Abend Euch allen,

    könnte von Euch jemand sich mal bitte meinen Quelltext ansehen bekomme das mit dem Instanzen Einsatz nicht hin.
    Aufgabe war:
    Getränke Klasse erstellen und Attribute als Instanz nutzen über Getränkeautomat.
    Bei der Ausgabe soll dann der Name, Preis und restliche Flaschen mit ausgegeben werden.

    Leider habe ich momentan kein Plan wie ich das machen soll. Habe es mit einer Zuweisung versucht. Aber der Compiler mag das nicht :-(.

    Bitte um kurze Erläuterung / Erklärung wie ich das Step by Step hin bekomme . 😃

    Vielen Dank Euch allen und noch einen schönen Abend.

    Gruß

    Inforc1

    Hier mein Quelltext

    /* ##################################
    Der Getränkeautomat Version 4
    ###################################*/
    #include<cmath>
    #include <iostream>
    using namespace std;

    //die Vereinbarung der Klasse muenzeinheit
    class muenzeinheit
    {
    //die Attribute
    int betrag;
    int nochZuZahlen;
    int rueckgeld;

    //die Methoden
    public:
    void init();
    void muenzenAnnehmen(int wert);
    int rueckgeldGeben();
    //zum Setzen des Betrags
    void setBetrag(int preis);
    //zum Abfragen des noch zu zahlenden Betrags
    int getnochZuZahlen();
    };

    void muenzeinheit::init()
    {
    betrag = 0;
    nochZuZahlen = 0;
    rueckgeld = 0;
    }

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

    // Neue Klasse Getränke
    class Getraenke
    {
    //die Attribute
    string getraenkeNamen[3];

    int restlicheFlaschen [3];

    float preisProFlasche [3];

    // Die Methoden
    public:

    void init();

    int namenWaehlen(int getraenkeNamen[3]);

    int uebrigeFlaschen(int restlicheFlaschen[3]);

    int kostenFlasche (int preisProFlasche[3]);

    };

    void Getraenke::init()
    {

    // Die Namen eintragen

    getraenkeNamen[0]="Fanta";

    getraenkeNamen[1]="Bonaqua";

    getraenkeNamen[2]="Bitburger";

    // die restlichen Flaschen
    //int anzahl;
    restlicheFlaschen[0]=10;
    //restlicheFlaschen[0]=restlicheFlaschen[0]-anzahl;

    restlicheFlaschen[1]=10;
    //restlicheFlaschen[1]= restlicheFlaschen[1]-anzahl;

    restlicheFlaschen[2]=10;
    //restlicheFlaschen[2]= restlicheFlaschen[2]-anzahl;

    // Der Preis pro Flasche

    preisProFlasche[0]=1.50;"Euro";

    preisProFlasche[1]=1.75;"Euro";

    preisProFlasche[2]=2.00;"Euro";

    }

    int Getraenke::namenWaehlen(int getraenkeNamen[3])
    {

    int auswahl;

    //Die Auswahl

    cout<<"Bitte waehlen Sie einen Namen: "<<endl;

    cout<<"Es gibt folgende Auswahl: "<<endl;

    for (int index =0;index < 3; index++)

    cout<<index+1<<"-"<<getraenkeNamen[index]<<endl;

    cout<<"Geben Sie ihre gewuenschte Nummer ein: ";

    cin>>auswahl;
    }

    int Getraenke::uebrigeFlaschen(int restlicheFlaschen[3])
    {
    // restliche Flaschen ausgeben
    int auswahl;

    if(restlicheFlaschen[auswahl-1]!=0)

    auswahl =auswahl-1;

    else
    {
    cout<<" Es sind leider nicht mehr genuegend Flaschen im Getraenke-"<<
    "automaten vorhanden... bitte anderes Getraenk waehlen"<<endl;

    auswahl = -1;
    }
    return auswahl;
    }

    int Getraenke::kostenFlasche( int preisProFlasche[3] )
    {
    //die Auswahl
    int auswahl;float Ausgabe;

    for(int index = 0;index < 3;index++)
    {

    cout<<index+1<<"="<<preisProFlasche[index]<<endl;
    // zuweisung von PreisproFlasche
    preisProFlasche[index]=auswahl *preisProFlasche[index];
    // Zuweisung des Preises in Ausgabe und damit in Komma
    Ausgabe=preisProFlasche[index];

    // Ausgabe des Preises mit Kommazahl
    cout<<"Die ausgegebene Flasche kostet"<<Ausgabe<<"Euro"<<endl;
    cin>>auswahl;
    }
    }

    //die Vereinbarung der Klasse getraenkeautomat
    class getraenkeautomat
    {
    //die Attribute
    string getraenk[3];
    int anzahlFlaschen[3];
    bool kuehlung;
    //jetzt ist die Münzeinheit Teil des Getränkeautomaten
    muenzeinheit *zahlomat;

    // Zeiger auf Getränke Methoden
    // Getränke-Namen
    Getraenke* get_Namen;
    // restliche Flaschen
    Getraenke* set_NichtgenutzteFlaschen;
    //Kosten Flasche
    Getraenke* set_FlaschenPreis;

    public:
    //die Methoden
    void init();
    int getraenkeWaehlen(Getraenke*get_Namen);
    void getraenkAusgeben(int anzahl, int getraenkeIndex);
    void kuehlen(bool anaus);
    };

    void getraenkeautomat::init()
    {
    //die Getränke eintragen
    getraenk[0] = "Limonade";
    getraenk[1] = "Wasser";
    getraenk[2] = "Bier";

    //die Anzahl der Flaschen
    anzahlFlaschen[0] = 10;
    anzahlFlaschen[1] = 10;
    anzahlFlaschen[2] = 10;

    //die Kühlung ist aus
    kuehlung = false;

    //eine Instanz der Münzeinheit erzeugen
    zahlomat = new muenzeinheit();
    //die Instanz initialisieren
    zahlomat->init();

    // Instanzen der Getränke erzeugen
    get_Namen = new Getraenke();
    set_NichtgenutzteFlaschen = new Getraenke();
    set_FlaschenPreis = new Getraenke();

    // Instanzen initialisieren
    get_Namen->init();
    set_NichtgenutzteFlaschen->init();
    set_FlaschenPreis->init();

    }

    int getraenkeautomat::getraenkeWaehlen(Getraenke * get_Namen)// zeiger auf Instanz Namen
    {
    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 << " - " << getraenk[index] << endl;
    cout << "Geben Sie die gewuenschte Nummer ein: ";
    auswahl= get_Namen*auswahl;

    // Will hier irgendwie die Instanz "Namen" mit einbauen!!!!!!

    cin>> auswahl;
    //gibt es noch Flaschen vom gewählten Getränk?
    if (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 <= anzahlFlaschen[getraenkeIndex])
    {
    cout << "Sie erhalten " << anzahl << " Flasche(n) " << getraenk[getraenkeIndex] << endl;
    anzahlFlaschen[getraenkeIndex] = anzahlFlaschen[getraenkeIndex] - anzahl;
    }
    else
    {
    cout << "Es sind nur noch " << anzahlFlaschen[getraenkeIndex] << " Flasche(n) " << getraenk[getraenkeIndex] << " vorhanden. ";
    cout << "Sie erhalten den Rest." << endl;
    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;

    automat = new getraenkeautomat();

    Getraenke * get_Namen=new Getraenke();

    get_Namen->init();
    //Instanz initialisieren
    automat->init();
    //ein Getränk auswählen
    do {
    auswahl = automat->getraenkeWaehlen (get_Namen);
    } while (auswahl == -1);

    //die Instanzen freigeben
    delete(automat);

    return 0;
    }



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Danke, dass du aus deinem letzten Thread absolut nichts gelernt hast. Wieder falsches Forum, wieder absolut unformatiert. Mein persönliches Hilfsbereitschaftslevel ist daher: 0


Anmelden zum Antworten