<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Kleines Problem mit dem Getränkeautomaten]]></title><description><![CDATA[<p>Hi,<br />
Ich hab folgendes Problem ich hab eine Klasse hinzugefügt (getraenke) die preise namen und die anzahl der noch vorhandenen Flaschen speichert. Das funktioniert soweit auch alles es lässt sich ausführen und es kommen keine Fehler oder Warnmeldungen. Aber anstatt das er den kompletten Preis dann anzeigt zählt er von einer ewig hochen Zahl runter. Ich finde aber den Fehler nicht bin noch nicht so gut in C++ wäre Super wenn mir jemand einen Tipp geben könnte wo ich was vergessen habe zu ändern.</p>
<p>hier mal der Quelltext:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;

using namespace std;

//die Klasse getraenke
class getraenke
{
    public:
    //die Attribute
    string getraenk[3];
    int anzahlFlaschen[3];
    int preisProFlasche[3];

    //die Methoden
    //der Konstruktor
    getraenke(int anzahl1, int anzahl2, int anzahl3, int preis1, int preis2, int preis3);
    //der Destruktor
    ~getraenke();
};

getraenke::getraenke(int anzahl1, int anzahl2, int anzahl3, int preis1, int preis2, int preis3)
{
    //die Getraenke eintragen
    getraenk[0]=&quot;Limonade&quot;;
    getraenk[1]=&quot;Wasser&quot;;
    getraenk[2]=&quot;Bier&quot;;
    //die Anzahl festlegen
    anzahlFlaschen[0]=anzahl1;
    anzahlFlaschen[1]=anzahl2;
    anzahlFlaschen[2]=anzahl3;

    preisProFlasche[0]=preis1;
    preisProFlasche[1]=preis2;
    preisProFlasche[2]=preis3;
}
getraenke::~getraenke()
{
    cout&lt;&lt;&quot;Eine Instanz der Klasse Getraenke wurde zerstört.&quot;&lt;&lt;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 &lt;&lt; &quot;Eine Instanz der Klasse muenzeinheit wurde zerstoert.&quot; &lt;&lt; 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 &lt;&lt; &quot;Eine Instanz der Klasse getraenkeautomat wurde zerstoert.&quot; &lt;&lt; endl;
}

int getraenkeautomat::getraenkeWaehlen()

{
    int auswahl, anzahl, preisProFlasche;
    //die Auswahl
    cout &lt;&lt; &quot;Bitte waehlen Sie ein Getraenk: &quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Es gibt folgende Auswahl: &quot; &lt;&lt; endl;

    for (int index = 0; index &lt; 3; index++)
        cout &lt;&lt; index+1 &lt;&lt; &quot; - &quot; &lt;&lt; getraenkomat-&gt;getraenk[index] &lt;&lt; endl;

    // es wird geprüft ob die Eingabe richtig ist
    do{
        cout &lt;&lt; &quot;Bitte waehlen Sie Ihr Getraenk (Nr 1-3): &quot;;
        cin &gt;&gt; auswahl;

    }while(auswahl&gt;3);

    //gibt es noch Flaschen vom gewählten Getränk?
    if (getraenkomat-&gt;anzahlFlaschen[auswahl-1] != 0)

    {
        //das Getränk ausgeben
        cout &lt;&lt; &quot;Wie viele Flaschen moechten Sie? &quot;;
        cin &gt;&gt; anzahl;

        //erst muss bezahlt werden
        //der Preis 10 ist fest vorgegeben
        cout &lt;&lt; &quot;Sie muessen &quot; &lt;&lt; anzahl * preisProFlasche &lt;&lt; &quot; Cent bezahlen.&quot; &lt;&lt; endl;

        zahlomat-&gt;setBetrag(anzahl * preisProFlasche);

        do {
            cout &lt;&lt; &quot;Es fehlen noch &quot; &lt;&lt; zahlomat-&gt;getnochZuZahlen() &lt;&lt; &quot; Cent.&quot; &lt;&lt; endl;
            zahlomat-&gt;muenzenAnnehmen(3);
        } while (zahlomat-&gt;getnochZuZahlen() &gt;0);

        //das Getränk ausgeben
        auswahl = auswahl - 1;
        getraenkAusgeben(anzahl, auswahl);
    }

    else
    {
        cout &lt;&lt; &quot;Das gewaehlte Getraenk ist leider nicht mehr vorhanden.&quot; &lt;&lt; endl;
        auswahl = -1;
    }
    return auswahl;
}

void getraenkeautomat::getraenkAusgeben(int anzahl, int getraenkeIndex)

{
    //gibt es noch genügend Flaschen?
    if (anzahl &lt;= getraenkomat-&gt;anzahlFlaschen[getraenkeIndex])
    {
        cout &lt;&lt; &quot;Sie erhalten &quot; &lt;&lt; anzahl &lt;&lt; &quot; Flasche(n) &quot; &lt;&lt; getraenkomat-&gt;getraenk[getraenkeIndex] &lt;&lt; endl;
        getraenkomat-&gt;anzahlFlaschen[getraenkeIndex] = getraenkomat-&gt;anzahlFlaschen[getraenkeIndex]  - anzahl;
    }

    else
    {
        cout &lt;&lt; &quot;Es sind nur noch &quot; &lt;&lt; getraenkomat-&gt;anzahlFlaschen[getraenkeIndex] &lt;&lt; &quot; Flasche(n) &quot; &lt;&lt; getraenkomat-&gt;getraenk[getraenkeIndex] &lt;&lt; &quot; vorhanden. &quot;;
        cout &lt;&lt; &quot;Sie erhalten den Rest.&quot; &lt;&lt; endl;
        getraenkomat-&gt;anzahlFlaschen[getraenkeIndex] = 0;
    }

    //Geld zurückgeben
    cout &lt;&lt; &quot;Sie erhalten &quot; &lt;&lt; zahlomat-&gt;rueckgeldGeben() &lt;&lt; &quot; Cent zurueck.&quot; &lt;&lt; endl;
}

void getraenkeautomat::kuehlen(bool anaus)
{
    if (anaus == true)
    {
        kuehlung = true;
        cout &lt;&lt; &quot;Die Kuehlung ist eingeschaltet. &quot; &lt;&lt; endl;
    }

    else
    {
        kuehlung = false;
        cout &lt;&lt; &quot;Die Kuehlung ist ausgeschaltet. &quot; &lt;&lt; endl;
    }
}
int main()
{
    int auswahl;

    //Instanz erzeugen
    //der Zeiger auf die Klasse
    getraenkeautomat *automat;

    //die Münzeinheit erzeugen
    getraenke *getraenkomat1 = new getraenke(2,6,9,10,8,6);
    muenzeinheit *einheit = new muenzeinheit();

    //die Münzeinheit wird jetzt übergeben
    automat = new getraenkeautomat(einheit,getraenkomat1);

    //ein Getränk auswählen
    do {
        auswahl = automat-&gt;getraenkeWaehlen();
    } while (auswahl == -1);

    //die Instanzen freigeben
    delete(automat);

    return 0;
}
</code></pre>
<p>So erstes erledigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ok ich schau mal wo ich das finde zum einstellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Danke schon mal im vorraus.</p>
<p>Ryo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/334600/kleines-problem-mit-dem-getränkeautomaten</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 13:30:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334600.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 25 Sep 2015 16:22:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kleines Problem mit dem Getränkeautomaten on Fri, 25 Sep 2015 16:40:15 GMT]]></title><description><![CDATA[<p>Hi,<br />
Ich hab folgendes Problem ich hab eine Klasse hinzugefügt (getraenke) die preise namen und die anzahl der noch vorhandenen Flaschen speichert. Das funktioniert soweit auch alles es lässt sich ausführen und es kommen keine Fehler oder Warnmeldungen. Aber anstatt das er den kompletten Preis dann anzeigt zählt er von einer ewig hochen Zahl runter. Ich finde aber den Fehler nicht bin noch nicht so gut in C++ wäre Super wenn mir jemand einen Tipp geben könnte wo ich was vergessen habe zu ändern.</p>
<p>hier mal der Quelltext:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;

using namespace std;

//die Klasse getraenke
class getraenke
{
    public:
    //die Attribute
    string getraenk[3];
    int anzahlFlaschen[3];
    int preisProFlasche[3];

    //die Methoden
    //der Konstruktor
    getraenke(int anzahl1, int anzahl2, int anzahl3, int preis1, int preis2, int preis3);
    //der Destruktor
    ~getraenke();
};

getraenke::getraenke(int anzahl1, int anzahl2, int anzahl3, int preis1, int preis2, int preis3)
{
    //die Getraenke eintragen
    getraenk[0]=&quot;Limonade&quot;;
    getraenk[1]=&quot;Wasser&quot;;
    getraenk[2]=&quot;Bier&quot;;
    //die Anzahl festlegen
    anzahlFlaschen[0]=anzahl1;
    anzahlFlaschen[1]=anzahl2;
    anzahlFlaschen[2]=anzahl3;

    preisProFlasche[0]=preis1;
    preisProFlasche[1]=preis2;
    preisProFlasche[2]=preis3;
}
getraenke::~getraenke()
{
    cout&lt;&lt;&quot;Eine Instanz der Klasse Getraenke wurde zerstört.&quot;&lt;&lt;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 &lt;&lt; &quot;Eine Instanz der Klasse muenzeinheit wurde zerstoert.&quot; &lt;&lt; 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 &lt;&lt; &quot;Eine Instanz der Klasse getraenkeautomat wurde zerstoert.&quot; &lt;&lt; endl;
}

int getraenkeautomat::getraenkeWaehlen()

{
    int auswahl, anzahl, preisProFlasche;
    //die Auswahl
    cout &lt;&lt; &quot;Bitte waehlen Sie ein Getraenk: &quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Es gibt folgende Auswahl: &quot; &lt;&lt; endl;

    for (int index = 0; index &lt; 3; index++)
        cout &lt;&lt; index+1 &lt;&lt; &quot; - &quot; &lt;&lt; getraenkomat-&gt;getraenk[index] &lt;&lt; endl;

    // es wird geprüft ob die Eingabe richtig ist
    do{
        cout &lt;&lt; &quot;Bitte waehlen Sie Ihr Getraenk (Nr 1-3): &quot;;
        cin &gt;&gt; auswahl;

    }while(auswahl&gt;3);

    //gibt es noch Flaschen vom gewählten Getränk?
    if (getraenkomat-&gt;anzahlFlaschen[auswahl-1] != 0)

    {
        //das Getränk ausgeben
        cout &lt;&lt; &quot;Wie viele Flaschen moechten Sie? &quot;;
        cin &gt;&gt; anzahl;

        //erst muss bezahlt werden
        //der Preis 10 ist fest vorgegeben
        cout &lt;&lt; &quot;Sie muessen &quot; &lt;&lt; anzahl * preisProFlasche &lt;&lt; &quot; Cent bezahlen.&quot; &lt;&lt; endl;

        zahlomat-&gt;setBetrag(anzahl * preisProFlasche);

        do {
            cout &lt;&lt; &quot;Es fehlen noch &quot; &lt;&lt; zahlomat-&gt;getnochZuZahlen() &lt;&lt; &quot; Cent.&quot; &lt;&lt; endl;
            zahlomat-&gt;muenzenAnnehmen(3);
        } while (zahlomat-&gt;getnochZuZahlen() &gt;0);

        //das Getränk ausgeben
        auswahl = auswahl - 1;
        getraenkAusgeben(anzahl, auswahl);
    }

    else
    {
        cout &lt;&lt; &quot;Das gewaehlte Getraenk ist leider nicht mehr vorhanden.&quot; &lt;&lt; endl;
        auswahl = -1;
    }
    return auswahl;
}

void getraenkeautomat::getraenkAusgeben(int anzahl, int getraenkeIndex)

{
    //gibt es noch genügend Flaschen?
    if (anzahl &lt;= getraenkomat-&gt;anzahlFlaschen[getraenkeIndex])
    {
        cout &lt;&lt; &quot;Sie erhalten &quot; &lt;&lt; anzahl &lt;&lt; &quot; Flasche(n) &quot; &lt;&lt; getraenkomat-&gt;getraenk[getraenkeIndex] &lt;&lt; endl;
        getraenkomat-&gt;anzahlFlaschen[getraenkeIndex] = getraenkomat-&gt;anzahlFlaschen[getraenkeIndex]  - anzahl;
    }

    else
    {
        cout &lt;&lt; &quot;Es sind nur noch &quot; &lt;&lt; getraenkomat-&gt;anzahlFlaschen[getraenkeIndex] &lt;&lt; &quot; Flasche(n) &quot; &lt;&lt; getraenkomat-&gt;getraenk[getraenkeIndex] &lt;&lt; &quot; vorhanden. &quot;;
        cout &lt;&lt; &quot;Sie erhalten den Rest.&quot; &lt;&lt; endl;
        getraenkomat-&gt;anzahlFlaschen[getraenkeIndex] = 0;
    }

    //Geld zurückgeben
    cout &lt;&lt; &quot;Sie erhalten &quot; &lt;&lt; zahlomat-&gt;rueckgeldGeben() &lt;&lt; &quot; Cent zurueck.&quot; &lt;&lt; endl;
}

void getraenkeautomat::kuehlen(bool anaus)
{
    if (anaus == true)
    {
        kuehlung = true;
        cout &lt;&lt; &quot;Die Kuehlung ist eingeschaltet. &quot; &lt;&lt; endl;
    }

    else
    {
        kuehlung = false;
        cout &lt;&lt; &quot;Die Kuehlung ist ausgeschaltet. &quot; &lt;&lt; endl;
    }
}
int main()
{
    int auswahl;

    //Instanz erzeugen
    //der Zeiger auf die Klasse
    getraenkeautomat *automat;

    //die Münzeinheit erzeugen
    getraenke *getraenkomat1 = new getraenke(2,6,9,10,8,6);
    muenzeinheit *einheit = new muenzeinheit();

    //die Münzeinheit wird jetzt übergeben
    automat = new getraenkeautomat(einheit,getraenkomat1);

    //ein Getränk auswählen
    do {
        auswahl = automat-&gt;getraenkeWaehlen();
    } while (auswahl == -1);

    //die Instanzen freigeben
    delete(automat);

    return 0;
}
</code></pre>
<p>So erstes erledigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ok ich schau mal wo ich das finde zum einstellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Danke schon mal im vorraus.</p>
<p>Ryo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2469054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2469054</guid><dc:creator><![CDATA[ryoske]]></dc:creator><pubDate>Fri, 25 Sep 2015 16:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Problem mit dem Getränkeautomaten on Fri, 25 Sep 2015 16:34:04 GMT]]></title><description><![CDATA[<p>Editier mal Deinen Beitrag und füg die Code Tags hinzu.<br />
Code markieren. Dann C++ Knopf unter dem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Smiley drücken.</p>
<p>Und stell mal das Warnlevel Deines Compilers höher. Meiner warnt mich nämlich, wenn ich Deinen Code kompiliere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2469056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2469056</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Fri, 25 Sep 2015 16:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Problem mit dem Getränkeautomaten on Fri, 25 Sep 2015 16:43:00 GMT]]></title><description><![CDATA[<p>Wahrscheinlich eine nicht initialisierte Variable. Schau mal deinen Code durch, ob du sowas findest.</p>
<p>Aber so auf den ersten Blick gefällt mir der Code überhaupt nicht. Und viele Kommentare sind völlig nutzlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2469057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2469057</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Fri, 25 Sep 2015 16:43:00 GMT</pubDate></item></channel></rss>