Sparschwein



  • Weil ich nach der Angabe von Marc-O gehe in meiner Main.

    Also a.print() bedeutet 0 * 1 Cent + 0 * 5 Cent + 0 * 10 Cent = 10 Cent.

    In der Angabe, die ich bekommen habe steht auch: Sparschwein a; // erzeugt ein leeres Sparschwein
    Sparschwein b=10; // erzeugt ein Sparschwein mit 10 Eincentmünzen als Inhalt
    Sparschwein c(2,3,4); // erzeugt ein Sparschwein mit 2 Eincent-, 3 Fünfcent- und 4 Zehncentmünzen als Inhalt



  • Deine Klassendefinition ist trotzdem falsch und das "a.Print" macht so keinen Sinn.

    class Sparschwein{
    
        int inhalt;
        int muenzen[3];
    
        public:
            void print();
            void einwerfen(int muenze);
            void leeren();
    };
    

    Wenn dann muss das so aussehen.



  • also mehr so in diese Richtung?
    Tut mir sehr leidl, dass ich noch so wenig Ahnung habe von Klassen, fällt mir schwer daher das ganze zu verstehen.

    class Sparschwein{
    
    	int inhalt;
    	int muenzen[3];
    
    	public:
    
    		void print();
    		void einwerfen(int muenze);
    		void leeren();
    
    };	
    
    void ::a.print() {
    
    	cout << "0 * 1 Cent + 0 * 5 Cent + 0 * 10 Cent = 0 Cent" << endl;
    
    }
    
    void ::b.print() {
    
    	cout << "10 * 1 Cent + 0 * 5 Cent + 0 * 10 Cent = 10 Cent" << endl;
    }
    
    void ::c.print() {
    
    	cout << "47 * 1 Cent + 11 * 5 Cent + 42 * 10 Cent = 522 Cent" << endl;
    }
    
    void ::d.print() {
    
    	cout << "0 * 1 Cent + 0 * 5 Cent + 0 * 10 Cent = 0 Cent" << endl;
    
    }
    
    void ::d.einwerfen() {
    
    	::d.print(0,8,15);
    
    }
    
    void ::d.print(0,8,15) {
    
    	cout << "0 * 1 Cent + 8 * 5 Cent + 15 * 10 Cent = 190 Cent" << endl;
    }
    
    void ::d.leeren() {
    
    	::d.print(0,0,0);
    }
    
    void ::d.print(0,0,0) {
    
    	cout << "0 * 1 Cent + 0 * 5 Cent + 0 * 10 Cent = 0 Cent" << endl;
    }
    


  • Hallo,

    class Sparschwein{
    
        int inhalt;
        int muenzen[3];
    
        public:
    
            void print(int firstCoin, int secondCoind, int thirdCoin);
            void einwerfen(int firstCoin, int secondCoind, int thirdCoin);
            void leeren();
    
    }; 
    
    void Sparschwein::print(int firstCoin, int secondCoind, int thirdCoin) {
    
        cout << "0 * 1 Cent + 0 * 5 Cent + 0 * 10 Cent = 0 Cent" << endl;
    
    }
    
    void Sparschwein::einwerfen(int firstCoin, int secondCoin, int thirdCoin) {
    
        ::print(firstCoind, secondCoin, thirdCoin);
    
    }
    
    void Sparschwein::leeren() { 
        ::print(0,0,0);
    }
    


  • Das ganze würde dann aber nicht mehr mit der alten Main funktionieren oder?
    Also nicht mehr mit:

    #include <iostream>
    #include "Sparschwein.C"
    using namespace std;
    
    int main () {
    
    	Sparschwein a;
    	a.print();
    
    	Sparschwein b = 10;
    	b.print();
    
    	Sparschwein c(47, 11, 42);
    	c.print();
    
    	Sparschwein d;
    	d.einwerfen(0, 8, 15);
    	d.print();
    
    	d.leeren();
    	d.print();
    
    return 0;
    }
    


  • Wieso denn nicht? Wenn du die entsprechenden Konstruktoren noch implementierst sollte das Problemlos funktionieren.



  • Das heißt ich muss jetzt nur noch bei meiner Klasse immer jeweils a. b. c. d. print, einwerfen und leeren einbauen oder?





  • warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    int muenzen[3] {0, 0, 0};

    Liegt das eventuell, dass der Inhalt Privat ist und ich ihn nicht bearbeiten darf im Weiteren?
    Denn default mäßig ist ja am Anfang alles Privat in der Klasse.



  • Nein, weiter kau ich dir jetzt nicht vor. - Dann musst du selbst mal google / die Doku bemühen wie du ein Array Initialisierst. - Außerdem scheint bei dir ja C++ 11 vorhanden zu sein, sonst wäre da keine Warnung sondern ein Compiler-Fehler.



  • Ich darf nicht nicht in der Klasse initialisieren, sondern erst im Konstruktor selbst, ist das richtig?

    Danke für eure Hilfe! 🙂

    PS: Habe es jetzt bereits gelöst, ein großes Dankeschön an euch, für eure Hilfe! 🙂



  • Eine Frage hätte ich noch, und zwar meint ihr, ob gefragt ist, dass man verschiedene Methoden einbaut? Also der Benutzer festlegen kann, ob das Sparschwein geleert wird, wie viel hinein gegeben werden soll, etc...



  • Was steht denn in der Aufgabenbeschreibung?



  • Schreiben Sie eine Klasse, deren Objekte ein Sparschwein repräsentieren. In dieses Sparschwein können nur Münzen im Wert von 1 Cent, 5 Cent und 10 Cent geworfen werden. Implementieren Sie zumindest die Methoden ''leeren'' (Setzt den Inhalt des Sparschweins auf 0), ''einwerfen'' (ermöglicht es, Münzen in das Sparschwein einzuwerfen) und ''print'' (gibt den Inhalt des Sparschweins in der Form z.B.: "2*1Cent + 1*5Cent+3*10Cent = 37Cent" aus)
    Schreiben Sie

    die nötigen Konstruktoren, damit folgende Definitionen von Objekten möglich sind (unter der Annahme, dass die Klasse den Namen Sparschwein hat):
    Sparschwein a; // erzeugt ein leeres Sparschwein
    Sparschwein b=10; // erzeugt ein Sparschwein mit 10 Eincentmünzen als Inhalt
    Sparschwein c(2,3,4); // erzeugt ein Sparschwein mit 2 Eincent-, 3 Fünfcent- und 4 Zehncentmünzen als Inhalt

    Die Vergleichsoperatoren <, >, ==, !=, die jeweils den Inhalt zweier Sparschweine vergleichen
    Schreiben Sie ein Hauptprogramm, das mindestens zwei Instanzen Ihrer Klasse verwendet und die Verwendung der verschiedenen Methoden illustriert.



  • Das war jetzt eigentlich nicht als Anweisung gedacht, den Inhalt des Startbeitrags nochmal zu Posten, sondern eher für dich um es noch mal zu lesen und zu interpretieren.

    ⚠ Du musst übrigens noch den Inhalt zweier Sparschweine vergleichen. ⚠



  • Ich würde es als Ja interpretieren, einfach weil es bis jetzt in fast jedem Beispiel gefragt war, dass der Benutzer etwas festlegen kann und es sonst irgendwie sinnlos wäre.


Anmelden zum Antworten