Problem bei C++

gingele

Level-1
Beiträge
227
Reaktionspunkte
42
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

in diesem Semester meines Studiums, haben wir C++ zu lernen. Wir haben jetzt die erste Aufgabe bekommen die wir lösen sollen, soweit kein Problem. Ich muss ein Medium in einer Klasse initalisieren, und auslesen. Dieses Medium kann man aussleihen und zurückgeben. Es funktioniert soweit alles bis auf das Ausleihen und die Rückgabe da bei dem Programm das Medium immer vorhanden ist.
HTML:
#include<iostream>
using namespace std;
#include<stdio.h>

class Medien{
    
    public:
        void init(){
            cout << '\n' << "Bitte Mediendaten eingeben \nSignatur:";
            cin >> signatur;
            cout << "Titel:";
            cin >> titel;
            status=true;
        }
        
        void ausgabe(){
            if (status=true){
                cout << "Signatur\t" << "Typ\t" << "Titel\t" << "Status" << '\n';
                cout << signatur << '\t' << "Medium" << '\t' << titel << '\t' << "vorhanden\n";
            }else{ //if (status=false){
                cout << "Signatur\t" << "Typ\t" << "Titel\t" << "Status" << '\n';
                cout << signatur << '\t' << "Medium" << '\t' << titel << '\t' << "verliehen\n";
            }
        }
            
        bool status;
    
    private:
        int signatur;
        char titel[20];
        
};


int main(){
    char eingabe;
    int i;
    Medien x; 
    
    
    for(i=0; i<=1; i++){
        cout << '\n' << "Bitte Kommando\n";
        cout << '\n' << "m = neues Medium";
        cout << '\n' << "l = lesen";
        cout << '\n' << "e = entleihen";
        cout << '\n' << "r = rueckgabe";
        cout << '\n' << "q = Ende";
        cout << '\n' << "\neingeben:";
        cin >> eingabe;

        switch (eingabe){
            case 'm':  x.init();
                       i=0;
                       break;

            case 'l':  x.ausgabe();
                       i=0;        
                       break;

            case 'e':  cout << "\nAusleihen\n";
                       x.status=false;
                       i=0;
                       break;

            case 'r':  cout << "\nRueckgabe\n";
                       i=0;
                       x.status=true;                     
                       break;

            case 'q':  i=1;
                       break;

            default:   cout << "\nFalsche Eingabe\n";
                       i=0;
        }
    }

}

Ich hab auch schon probiert den Status abzufragen ohne if-Schleife in der ausgabefunktion, und da hat es funktioniert, warum aber dann nicht mit einer Zuweisung des Status mittels einem Text.

vielleicht habt ihr eine Idee,
im vorraus schon Danke

gruß frank
 
Hallo gingele,

ich habe mich zwar mit C++ lange nicht mehr beschäftigt, aber sollte man nich die Variable "status" erst deklarieren und dann definieren?

Wenn du die Lösung gefunden hast, dann schreib sie bitte. Würde mich auch interessieren.

Gruß!
 
Es Funktioniert, vielen Dank. Ein wirklich dummer Fehler, sorry. Hab ich die ganze Zeit übersehen, kommt davon wenn man Matlab und sontiges auch noch zu lernen hat. Naja jetzt gehts ja.
 
Zurück
Oben