Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Kaffeautomat

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
31.01.2010, 12:06 Uhr
Pamina



Hey leute ich hätt da mal wieder ne frage wir sollen ein programm schreiben für einen kaffeautomaten und danach soll der automat modifiziertt werden so dass man auch Kakao bestellen kann, dazu soll die Klasse GetränkeAutomat abgeleitet werden. naja vor dem ableiten ist das program gelaufen nun nicht mehr.

es werden mir folgende fehler angezeigt
1)automat.cpp(255) : error C2509: 'service': Memberfunktion wurde in 'GetränkeAutomat' nicht deklariert
2)automat.h(49): Siehe Deklaration von 'GetränkeAutomat'
3)automat.cpp(330) : error C2509: 'menue': Memberfunktion wurde in 'GetränkeAutomat' nicht deklariert
4)automat.h(49): Siehe Deklaration von 'GetränkeAutomat'

und die bekomm ich irgenwie nicht weg, kann mi jemand helfen???
hier das programm:

main.cpp

C++:
#include <iostream>
#include "automat.h"
using namespace std;

int main()
{


GetränkeAutomat Cafeteria=GetränkeAutomat();        /*Instanz Cafeteria wird
erstellt*/

Cafeteria.menue();                              /*das Menue wird aufgerufen,
alle anderen
                                                Methoden werden direkt aus dem
Menue aufgerufen*/



getchar();getchar();
return 0;
}





automat.h

C++:
#ifndef AUTOMAT_H
#define AUTOMAT_H
                                            

/*in dieser Datei werden Objekte und Methoden deklariert*/


class KaffeeAutomat{
protected:                                  /*hier werden drei private
Membervariablen erstellt*/


    double m_kaffee;
    double m_wasser;
    double m_geld;

    
public:                                     /*public-Methoden*/

    KaffeeAutomat();                            /*Standardkonstruktor*/
    KaffeeAutomat(double kaffee,double wasser,double geld); /*Konstruktor, der
die Parameter wasser, kaffee und geld enthält*/

    ~KaffeeAutomat();                                       /*Destruktor*/

    double getKaffeeStand();                                /*Methode, die den
Kaffeestand herausgibt*/

    void setkaffeeEinfuellen(double kaffee);                /*Methode, die den
Kaffeestand ändert*/

    double getWasserStand();                                /*Methode, die den
Wasserstand herausgibt*/

    void setwasserEinfuellen(double wasser);                /*Methode, die den
Wasserstand ändert*/
    
    double getGeldBetrag();                                 /*Methode, die den
Geldbetrag herausgibt*/

    void setentnehmeGeld(double geld);                      /*Methode, die den
Geldbetrag auf 0 setzt*/


    void kaufeheißesWasser();
    void kaufeEspresso();
    void kaufeKaffee();
    void entnehmeGeld();
    void menue();
    void service();
    
    

    
};

class GetränkeAutomat : public KaffeeAutomat /*Klasse GetränkeAutomat erbt von
Klasse Kaffeeautomat*/

{
protected:

    double m_kakao;                             /*neue Membervariable*/

public:

     GetränkeAutomat();                         /*Standardkonstruktor*/
    GetränkeAutomat(double kakao);  /*Konstruktor, der die Parameter wasser,
kaffee und geld enthält*/

    ~GetränkeAutomat();
    
    double getKakaoStand();                 /*Kakaomethoden*/
    void setkakaoEinfuellen (double kakao);
    void kaufeKakao();
    


};                                      



#endif

Dieser Post wurde am 31.01.2010 um 12:57 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.01.2010, 12:08 Uhr
Pamina



automat.cpp


C++:
#include <iostream>
#include "automat.h"
using namespace std;

KaffeeAutomat::KaffeeAutomat(){                                
/*Standardkonstruktor, die Membervariablen werden willkürlich auf 5000 gesetzt*/
    m_wasser=m_kaffee=m_geld=5000;
}
KaffeeAutomat::KaffeeAutomat(double wasser, double kaffee, double geld){    
/*ein weiterer Konstruktor, der den Membervariablen jeweils eine Variable
zuweist*/

    m_wasser=wasser;
    m_kaffee=kaffee;
    m_geld=geld;
}

KaffeeAutomat::~KaffeeAutomat() {}      /*Destruktor*/

GetränkeAutomat::GetränkeAutomat(){                                
/*Standardkonstruktor für abgeleitete Klasse*/
    m_kakao=5000;
}
GetränkeAutomat::GetränkeAutomat(double kakao){    /*weiterer Konstruktor für
abgeleitete Klasse*/

     m_kakao=kakao;
  
}
GetränkeAutomat::~GetränkeAutomat() {}          /*Destruktor der abgeleiteteten
Klasse*/


double KaffeeAutomat::getKaffeeStand(){                         /*Methode, die
den Koeffizienten kaffee herausgibt*/

    return m_kaffee;

}
void KaffeeAutomat::setkaffeeEinfuellen(double kaffee){         /*Methode, die
m_kaffee den Wert kaffee zuweist*/

    m_kaffee=kaffee;

}
double KaffeeAutomat::getWasserStand(){                         /*Methode, die
den Koeffizienten wasser herausgibt*/

    return m_wasser;
}
void KaffeeAutomat::setwasserEinfuellen(double wasser){         /*Methode, die
m_wasser den Wert wasser zuweist*/

    m_wasser=wasser;
}
double KaffeeAutomat::getGeldBetrag(){                          /*Methode, die
den Koeffizienten GeldBetrag herausgibt*/

    return m_geld;
}
void KaffeeAutomat::entnehmeGeld(){                             /*Methode, die
den Geldbetrag auf 0 setzt*/

    cout<<"Im Automaten sind zur Zeit "<<getGeldBetrag()<<" Einheiten enthalten."<<endl;
    cout<<"Es werden nun "<<getGeldBetrag()<<" Einheiten entnommen."<<endl;
    m_geld=0;
}

double GetränkeAutomat::getKakaoStand(){                            /*Methode,
die den Koeffizienten kakao herausgibt*/

    return m_kakao;
}
void GetränkeAutomat::setkakaoEinfuellen(double kakao){         /*Methode, die
m_kakao den Wert kakao zuweist*/

    m_kakao=kakao;
}

void KaffeeAutomat::kaufeheißesWasser () {
    double geldeinwurf;                         /*zwei neue Variablen für
eingeworfenes Geld und Rückgeld*/

    double rueckgeld;  
        if (getWasserStand() < 150)                 /*zu wenig Wasser
enthalten*/

            {
                cout<<"Es ist leider nicht genug heisses Wasser im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        else
        {
            cout<<"Bitte geben Sie 0,50 Euro ein."<<endl;
            
            cin>>geldeinwurf;                   /*zu wenig Geld eingeworfen*/
                if (geldeinwurf < 0.50)
                    {
                        cout<<"Sie haben leider zu wenig Geld eingeworfen."<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    }
                else
                    {  
                        m_wasser = getWasserStand()-150;            /*Einheiten
für ein heißes Wasser werden vom Wasserstand abgezogen*/

                        rueckgeld=geldeinwurf-0.50;
                        cout<<"Geniessen Sie das heisse Wasser!"<<endl;
                        cout<<"Ihr Rueckgeld betraegt "<<rueckgeld<<"!"<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    
                    }
        }

} /*end KaufeheißesWasser*/


void KaffeeAutomat::kaufeEspresso () {
    double geldeinwurf;
    double rueckgeld;
        if (getWasserStand() < 50)              /*genug Wasser/Kaffee?*/
            {
                cout<<"Es ist leider nicht genug heisses Wasser fuer einen Espresso im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        if (getKaffeeStand() < 300)
            {
                cout<<"Es ist leider nicht genug Kaffee fuer einen Espresso im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        else
        {
            cout<<"Bitte geben Sie 1,75 Euro ein."<<endl;
            
            cin>>geldeinwurf;                          
                if (geldeinwurf < 1.75)
                    {
                        cout<<"Sie haben leider zu wenig Geld eingeworfen."<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    }
                else
                    {
                        m_wasser = getWasserStand()-50;
                        m_kaffee = getKaffeeStand()-300;
                        rueckgeld = geldeinwurf-1.75;
                        cout<<"Geniessen Sie den Espresso!"<<endl;
                        cout<<"Ihr Rueckgeld betraegt "<<rueckgeld<<"!"<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    
                    }
        }

}/*end KaufeEspresso*/




 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.01.2010, 12:09 Uhr
Pamina



mist automat.cpp ist zu lang hier der rest:


C++:
void KaffeeAutomat::kaufeKaffee () {
    double geldeinwurf;
    double rueckgeld;
        if (getWasserStand() < 100)
            {
                cout<<"Es ist leider nicht genug heisses Wasser fuer einen schwarzen Kaffee im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        if (getKaffeeStand() < 200)
            {
                cout<<"Es ist leider nicht genug Kaffee fuer einen schwarzen Kaffee im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        else
        {
            cout<<"Bitte geben Sie 1,50 Euro ein."<<endl;
            
            cin>>geldeinwurf;
                if (geldeinwurf < 1.50)
                    {
                        cout<<"Sie haben leider zu wenig Geld eingeworfen."<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    }
                else
                    {
                        m_wasser = getWasserStand()-100;
                        m_kaffee = getKaffeeStand()-200;
                        rueckgeld = geldeinwurf-1.50;
                        cout<<"Geniessen Sie den Kaffee!"<<endl;
                        cout<<"Ihr Rueckgeld betraegt "<<rueckgeld<<"!"<<endl;
                        cout<<""<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    }
        }

} /*end KaufeKaffee*/

void GetränkeAutomat::kaufeKakao() {
    double geldeinwurf;
    double rueckgeld;
        if (getWasserStand() < 120)             /*genug Wasser/Kakao?*/
            {
                cout<<"Es ist leider nicht genug heisses Wasser fuer einen Kakao im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        if (getKakaoStand() < 250)
            {
                cout<<"Es ist leider nicht genug Kakao im Automaten."<<endl;
                getchar();getchar();
                system ("cls");
                return menue();
            }
        else
        {
            cout<<"Bitte geben Sie 1,20 Euro ein."<<endl;
            
            cin>>geldeinwurf;                          
                if (geldeinwurf < 1.20)
                    {
                        cout<<"Sie haben leider zu wenig Geld eingeworfen."<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    }
                else
                    {
                        m_wasser = getWasserStand()-120;
                        m_kaffee = getKakaoStand()-250;
                        rueckgeld = geldeinwurf-1.75;
                        cout<<"Geniessen Sie den Kakao!"<<endl;
                        cout<<"Ihr Rueckgeld betraegt "<<rueckgeld<<"!"<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                    
                    }
        }

}/*end KaufeKakao*/

void GetränkeAutomat::service(){
    int y;  
    
    cout<<"          Service-Menue             \n"<<endl;
    cout<<"Bitte waehlen Sie die Nummer der Operation, die Sie ausfuehren moechten!\n"<<endl;
    cout<<"1) Wasser nachfuellen"<<endl;
    cout<<"2) Kaffee nachfuellen"<<endl;
    cout<<"3) Kakao nachfuellen"<<endl;
    cout<<"4) Geld entnehmen"<<endl;
    cout<<"5) Servicebereich verlassen"<<endl;

    cin>>y;
    if (y<6)                                    /*maximaler Behälterfüllstand
willkürlich auf 10000 gesetzt,*/

    {                                           /*damit Behälter nicht unendlich
befüllbar ist*/

        switch(y)
            {
                case 1: cout <<"Sie moechten Wasser nachfuellen."<< endl;                      

                        cout<<"Der Wasserbehaelter hat ein Fassungsvermoegen von 10.000 Einheiten."<<endl;
                        cout<<"Er wird nun komplett gefuellt."<<endl;
                        setwasserEinfuellen(10000);                    
                        cout<<"Neuer Wasserstand: "<<getWasserStand()<<""<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                        break;

                case 2: cout <<"Sie moechten Kaffee nachfuellen"<< endl;
                        cout<<"Der Kaffeebehaelter hat ein Fassungsvermoegen von 10.000 Einheiten."<<endl;
                        cout<<"Er wird nun komplett gefuellt."<<endl;
                        setkaffeeEinfuellen(10000);
                        cout<<"Neuer Kaffeestand: "<<getKaffeeStand()<<""<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                        break;

                case 3: cout <<"Sie moechten Kakao nachfuellen"<< endl;
                        cout<<"Der Kakaobehaelter hat ein Fassungsvermoegen von 10.000 Einheiten."<<endl;
                        cout<<"Er wird nun komplett gefuellt."<<endl;
                        setkakaoEinfuellen(10000);
                        cout<<"Neuer Kakaostand: "<<getKakaoStand()<<""<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                        break;

                case 4: cout <<"Sie haben sich dafuer entschieden, den Geldbehaelter zu entleeren!"<< endl;
                        entnehmeGeld();
                        getchar();getchar();
                        system ("cls");
                        return menue();
                        break;

                case 5: cout<<"Sie haben sich dazu entschieden, den Servicebereich zu verlassen."<<endl;
                        getchar();getchar();
                        system ("cls");
                        return menue();
                        break;
            }
    }
else
    {
        cout <<"Sie haben keine der vier Auswahlmoeglichkeiten gewaehlt"<< endl;
        getchar();getchar();
        system ("cls");
        return menue();
    }



}

void GetränkeAutomat::menue(){

int x;

cout<<"     Menue       "<<endl;
cout<<""<< endl;
cout <<"Bitte waehlen Sie ein Produkt!" << endl;
cout<<" 1) Wasser kaufen    Preis: 0,50 Euro"<< endl;
cout<<" 2) Espresso kaufen  Preis: 1,75 Euro"<< endl;
cout<<" 3) Kaffee kaufen    Preis: 1,50 Euro"<< endl;
cout<<" 4) Kakao kaufen Preis: 1,20 Euro"<< endl;
cout<<" 5) Service"<< endl;

cout<<"Im Moment sind folgende Mengen an Kaffee, Wasser, Kakao und \nGeld im Automaten enthalten:"<<endl;
cout<<endl;
cout<<"Wassereinheiten: "<<getWasserStand()<<""<<endl;
cout<<"Kaffeeeinheiten: "<<getKaffeeStand()<<""<<endl;
cout<<"Kakaoeinheiten:"<<getKakaoStand()<<""<<endl;
cout<<"Geldbetrag: "<<getGeldBetrag()<<""<<endl;

cin>>x;

if (x<6)
    {
        switch(x)
            {
                case 1: cout <<"Sie haben sich fuer heisses Wasser entschieden!"<< endl;
                        kaufeheißesWasser();
                        break;

                case 2: cout <<"Sie haben sich fuer Espresso entschieden!"<< endl;
                        kaufeEspresso();
                        break;

                case 3: cout <<"Sie haben sich fuer Kaffee entschieden!"<< endl;

                        kaufeKaffee();
                        break;

                case 4: cout <<"Sie haben sich fuer Kakao entschieden!"<< endl;
                        kaufeKakao();
                        break;

                case 5: service();
                        break;
            }
    }
else
    {
        cout <<"Sie haben keines der 5 Optionen gewaehlt!"<< endl;
        getchar();getchar();
        system ("cls");
        return menue();
    }

getchar();getchar();

}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.01.2010, 12:42 Uhr
~f.-th.
Gast


Kommt denn dein Compiler mit ä, ö ü und ß klar?

Versuche bitte den Quelltext auf das wahrscheinliche Problem zu kürzen.
Dieser hier ist arg lang.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.01.2010, 12:55 Uhr
Pamina



ja ä,ö,ü ist kein problem, da alles iwie miteinander zusammenhängt hab ich keine ahnung wie ich das kürzen soll weil er ja anscheinend nicht auf eine klasse klarkommt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.01.2010, 13:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi,

C++:
class Kaffeeautomat
{
  // ...
   void menue();
    void service();
};



d.h menue und service ist nur in "Kaffeeautomat" definiert und nicht in GetränkeAutomat.

Ansonsten würde ich das ganze (ich weiß ja nicht in wie weit das vorgegeben ist) anders angehen:

GetränkeAutomat -> menu, service, produktauswahl, wechselgeld
Getränk (Interface) -> name, kosten, auffüllen, füllstand, kaufen

Getränk: Kaffee
Getränk: Expresso
Getränk: Kakao
Getränk: HeißesWasser

dann hat "GetränkeAutomat" ein Array aus "Getränk"en.
Er kann dann über das "Getränk"-Interface beliebige Getränke verwalten.
--
class God : public ChuckNorris { };

Dieser Post wurde am 31.01.2010 um 13:04 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.01.2010, 13:12 Uhr
~f.-th.
Gast


Es sieht ausserdem so aus als ob du die Funktion von

C++:
return()

nicht verstanden hast.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.01.2010, 13:15 Uhr
~f.-th.
Gast


Mein Compiler mag keine ä u.s.w.
zeigt aber dies nicht in der entsprechenden Zeile, sondern völlig woanders!

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.01.2010, 13:16 Uhr
Pamina



nee das war so vorgegeben
aber sag mal in automat. h erbt ja die Klasse GetränkeAutomat von der Klasse Kaffeeautomat von daher müsste ja service und menue enthalten sein oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.01.2010, 13:51 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst dann natürlich schon statt

void GetränkeAutomat::menue(){

void KaffeeAutomat::menue(){

schreiben
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: