Hilfe für einen Anfänger



  • hallo Leute

    ich muss für die schule einen sparschwein Programmieren. Die Header datei müsste fehlerfrei sein ...mein problem ist die cpp datei

    der compiler gibt zwar keine fehler an und führt die exe datei aus aber die exe datei gibt sofort ein Fehler aus ...."piggybank.exe hat ein fehler festgestellt usw"

    wenn mir da jemand mal sagen könnte wo das problem liegt wär ich sehr dankbar.

    Desweiteren würd ich doch gern noch paar änderungen an meiner main funktion vornehmen ...so wie es jetzt ist ....gibt er immer eine vorgeschriebene anzahl an münzen in das sparschwein und zieht wieder welche ab. Meine vorstellung ist

    er soll max. 50 Münzen zulassen
    dan den inhalt ausgeben isBroken()
    ob er voll isFull() oder Leer ist isEmpty() anzeigen.

    header datei:

    //piggybank.h
    
    #ifndef PIGGYBANK_H
    #define PIGGYBANK_H
    
    class PiggyBank
    {
    public:
        PiggyBank(int _1cent = 0, int _10cent = 0, int _50cent = 0, int _1euro = 0);
    
        int get1centsCount();
        int get10centsCount();
        int get50centsCount();
        int get1eurosCount();
    
        PiggyBank &add1cents(int );
        PiggyBank &add10cents(int );
        PiggyBank &add50cents(int );
        PiggyBank &add1euros(int );
    
        int withdraw1cents(int );
        int withdraw10cents(int );
        int withdraw50cents(int );
        int withdraw1euros(int );
    
        double displayBalance();
        void isEmpty();
        void isFull();
        void isBroken();
        void breakInto();
    
    public:
        int _1cent;
        int _10cent;
        int _50cent;
        int _1euro;
    
    } ;
    #endif
    

    cpp datei

    //PiggyBank.cpp
    #include <cstdlib>
    #include<iostream>
    #include "piggybank.h"
    
    using namespace std;
    
    PiggyBank::PiggyBank(int _1cent, int _10cent, int _50cent, int _1euro)
    {
        add1cents(_1cent);
        add10cents(_10cent);
        add50cents(_50cent);
        add1euros(_1euro);
    }
    
    PiggyBank &PiggyBank::add1cents(int p)
    {
        _1cent = _1cent + p;
    }
    
    PiggyBank &PiggyBank::add10cents(int n)
    {
        _10cent = _10cent + n;
    }
    
    PiggyBank &PiggyBank::add50cents(int d)
    {
        _50cent = _50cent + d;
    }
    
    PiggyBank &PiggyBank::add1euros(int q)
    {
        _1euro = _1euro + q;
    }
    
    int PiggyBank::get1centsCount()
    {
        return _1cent;
    }
    
    int PiggyBank::get10centsCount()
    {
        return _10cent;
    }
    
    int PiggyBank::get50centsCount()
    {
        return _50cent;
    }
    
    int PiggyBank::get1eurosCount()
    {
        return _1euro;
    }
    
    int PiggyBank::withdraw1cents(int p)
    {
        _1cent = _1cent - p;
    }
    
    int PiggyBank::withdraw10cents(int n)
    {
        _10cent = _10cent - n;
    }
    
    int PiggyBank::withdraw50cents(int d)
    {
        _50cent = _50cent - d;
    }
    
    int PiggyBank::withdraw1euros(int q)
    {
        _1euro = _1euro - q;
    }
    
    double PiggyBank::displayBalance()
    {
        double balance = (_1euro * 1) + (_50cent * .50) + (_10cent * .1) + (_1cent * .01);
        return balance;
    
    }
    
    void PiggyBank::isEmpty()
    {
    }
    void PiggyBank::isFull()
    {
    }
    void PiggyBank::isBroken()
    {
    }
    void PiggyBank::breakInto()
    {
    }
    
    int main()
    {
        PiggyBank leer;
        cout << "(1) Sparschwein ist LEER!! ";
        //leer.displayBalance();
        //cout << endl;
    
        //leer.add1cents(17).add10cents(6).add50cents(3).add1euros(5);
        cout << "(2) Sparschwein ist befüllt! ";
        leer.displayBalance();
        cout << endl;
    
        cout << "(3) ziehe 4 10cent Münzen ab "
            << leer.withdraw10cents(4) << " jetzt sind nur noch ";
        leer.displayBalance();
        cout << endl
            << leer.get10centsCount()
            << " im Sparschwein" << endl;
    
        cout << "(4) ziehe 5 50cent Münzen ab "
            << leer.withdraw50cents(5) << " jetzt sind nur noch ";
        leer.displayBalance();
        cout << endl
            << leer.get50centsCount()
            << " im sparschwein" << endl;
    
        leer.add50cents(2).add1euros(-1);
        cout << "(5) werfe 2 50cent Münzen ein und ziehe eine 1euro Münze ab, "
            << " jetzt sind im ";
        leer.displayBalance();
        cout << endl
            << leer.get50centsCount()
            << leer.get1eurosCount()
            << " Sparschwein " << endl;
    
        cout << "(6) ";
        leer.breakInto();
        cout << "  das Sparschwein enthält ";
        leer.displayBalance();
        cout << endl;
    
    system("PAUSE");
    return 0;
    }
    

    mfg carsi



  • Also mein Compiler übersetzt das nicht. Du hast schonmal vergessen, bei den meisten deiner Methoden auch einen Wert zurückzugeben...



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • danke erstmal für deine hilfe

    noch bin ich nicht weiter gekommen aber ich experimmäntiere mal weiter ...und ich benutze DEV C++ als compiler

    mfg



  • carsi schrieb:

    ...und ich benutze DEV C++ als compiler

    Wechsel lieber mal auf eine aktuelle Umgebung (DEV C++ ist dies nicht) wie Visual C++ 2008 Express oder Code::Blocks.

    Wobei ich bezweifel das - unabhängig wie schlecht DEV C++ ist - du keine Warnungen bekommst. In 98% der Fälle sollte man auch Warnungen beachten... (und bei den verbleibenden 2% sollte man sich wirklich sicher sein, das diese keine Auswirkungen haben).



  • ich bin auf DEV C++ angewiesen weil es das einzige programm auf den SCHULRECHNER ist leider. 😞



  • carsi schrieb:

    ich bin auf DEV C++ angewiesen weil es das einzige programm auf den SCHULRECHNER ist leider. 😞

    Dennoch bezweifel ich, das du nicht einmal eine Warnung bekommst. Beispielsweise für folgende Methode:

    PiggyBank & PiggyBank::add1cents(int p)
    {
        _1cent = _1cent + p;
    }
    

    Selbst bei Compilern die dies ohne Fehlermeldung akzeptieren, kenne ich keinen, der nicht mindestens eine Warnung ausgeben würde.



  • wie gesagt bei mir in der zeile wo die fehler und meldungen ausgegeben werden steht nix ...aber wie müsste der code den aussehen deiner meinung nach?



  • PiggyBank &PiggyBank::add1cents(int p) 
    { 
        _1cent = _1cent + p; 
        return *this;
    }
    


  • .... und außerdem würde ich Dir vorschlagen, erst einmal
    1.) ein "hello world"-Programm zu kompilieren und erfolgreich laufen zu lassen und
    2.) dann langsam Dein Programm aufzubauen und nicht erstmal 30 (zudem noch nahezu identische) Memberfunktionen zu implementieren, wenn das Programm sowieso nicht läuft.
    3.) Schließlich ist "leer" ein selten dä...... "ungewöhlicher" Variablenname. Spätestens nach dem ersten "add...."-Call stimmt er schon nicht mehr.
    😉

    Gruß,

    Simon2.



  • Na wenn eine Funktion nix zurückgeben soll, dann musst du das auh so deklarieren (gib als Rückgabetyp void an).

    carsi schrieb:

    wie gesagt bei mir in der zeile wo die fehler und meldungen
    ausgegeben werden steht nix

    😕
    In welcher Zeile wird denn eine Fehlermeldung angezeigt? Und wieso soll da nix stehen??



  • danke theta

    jetzt kommt die debug fehlermeldung beim ausführen nicht mehr.
    Nun gibt er aber einfach irgendwelche langen zahlenketten aus.



  • _matze schrieb:

    in welcher Zeile wird denn eine Fehlermeldung angezeigt? Und wieso soll da nix stehen??

    du hast es falsch verstanden ....der compiler gibt keine fehlermeldung aus da für ihn keine fehler bestehen.....ich meinte damit das fenster wo mein compiler die fehler meldung vornimmt das da nix drin steht wo sich ASC sich gewundert hat das es halt keine Meldung Warnung gibt. 😉

    Die einzige fehler meldung kam beim Ausführen und das als WINDOWS Fehlermeldung die jetzt dank theta behoben ist


Anmelden zum Antworten