Problem mit C++ in verbindung mit ADT`s



  • tabtaste schrieb:

    wenn ich im jetzt unter den case einweisungen sage was er in die datenbank schreiben soll und so weiter und dann mit deinen befehlen im sage das er sie speichern und öffnen soll... dann hab ich doch eigentlich oder ?

    Ja schon. 🤡



  • hey ich hab jetzt mal ein c++ buch gelesen und meine unterteilungen und menue punkte in das programm eingefügt .. ich komm aber nicht weiter, wei auch gar nicht wie ich das angehen soll oder wo ich nachschlagen kann oder was ich googlen kann... finde nichts was mich in meinem fall weiter bring

    #include <iostream> 
    #include <string> 
    #include <vector> 
    using namespace std; 
    
    struct Adresse 
    { 
        string strasse; 
        string hausnummer; 
        string postleitzahl; 
        string wohnort; 
    }; 
    struct Telefon
    {
    	string Mobilnummer;
    	string Festnetznummer;
    };
    struct Firma
    {
    	string Strasse;
    	string Hausnummer;
    	string plz;
    	string ort;
    };
    struct Ansprechpartner
    {
    	string Mobilnummer;
    	string Festnetznummer;
    	string Email;
    };
    struct Praxispartner
    {
    	Firma Firma;
    	Ansprechpartner Ansprechpartner;
    };
    struct Adressbuch 
    { 
    	string Matrikelnummer;
        string name; 
    	string Vorname;
        Adresse adresse;
    	Telefon telefon;
    	string Email;
    	string Studiengang;
    	Praxispartner praxispartner;
    }; 
    
    int main() 
    { 
        vector<Adressbuch> datenbank; 
        char eingabe; 
    
        do 
        { 
            cout << "Datei eingeben  (1)" << '\n'; 
            cout << "Daten auf Bildschirm ausgeben     (2)" << '\n'; 
            cout << "Daten von HD lesen   (3)" << '\n'; 
            cout << "Datensatz suchen (4)" << '\n'; 
    		cout << "Daten auf HD speichern (5)" << '\n'; 
    		cout << "Datensatz löschen (6)" << '\n'; 
    		cout << "Datensatz ändern (7)" << '\n'; 
            cout << "Programm beenden   (0)" << '\n'; 
            cout << "Ihre Eingabe: "; 
            cin >> eingabe; 
    
            switch( eingabe ) 
            { 
                case '1': 
                { 
                    break; 
                } 
                case '2': 
                { 
                    break; 
                } 
                case '3': 
                { 
                    break; 
                } 
                case '4': 
                { 
                    break; 
                } 
    			case '5': 
                { 
                    break; 
                } 
    			case '6': 
                { 
                    break; 
                } 
    			case '7': 
                { 
                    break; 
                } 
                case '0': 
                { 
                    break; 
                } 
    
            } 
        }while( eingabe!='0' ); 
    }
    


  • 1. Das macht nicht viel Spaß, all diese Daten durch einen Benutzer eingeben zu lassen. Darum kürze ich das mal stark ab.
    2. Ich geb dir mal eine Kostprobe, der Rest geht dann analog. (Bei solch einer Übung kann man verschiedenste C++-Gebiete durchgehen)
    3. Du brauchst keine Daten von der HDD zu lesen, sie sind bei Eintritt in die Schleife bereits in der Datenbank.

    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <fstream>
    #include <vector>
    using namespace std;
    
    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    
    ostream& operator<<(ostream& out, Adresse a)
    {
    	out << a.strasse      << ' ';
    	out << a.hausnummer   << ' ';
    	out << a.postleitzahl << ' ';
    	out << a.wohnort      << ' ';
    	return out;
    }
    
    istream& operator>>(istream& in, Adresse& a)
    {
    	in >> a.strasse;
    	in >> a.hausnummer;
    	in >> a.postleitzahl;
    	in >> a.wohnort;
    	return in;
    }
    
    void ausgabe_tabelle(ostream& out, const vector<Adresse>& datenbank)
    {
    	for(vector<Adresse>::const_iterator it=datenbank.begin(); it!=datenbank.end(); ++it)
    		out << *it << endl;
    }
    
    void lade_datenbank(vector<Adresse>& datenbank)
    {
    	ifstream file("db.txt");
    	if( file.is_open() )
    	{
    		for(Adresse a; file>>a; datenbank.push_back(a));
    	}
    }
    
    void speichere_datenbank(const vector<Adresse>& datenbank)
    {
    	ofstream file("db.txt");
    	if( file.is_open() )
    	{
    		ausgabe_tabelle(file, datenbank);
    	}
    }
    
    struct suche_datensatz_praedikat
    {
    	string suche;
    	suche_datensatz_praedikat(const string& suche) : suche(suche) {}
    	bool operator()(const Adresse& a) const
    	{
    		if( a.hausnummer==suche || a.postleitzahl==suche || a.strasse==suche || a.wohnort==suche )
    			return true;
    		return false;
    	}
    };
    vector<Adresse>::const_iterator suche_datensatz(const vector<Adresse>& datenbank)
    {
    	cout << endl << "Suchwort: ";
    	string suchwort;
    	cin >> suchwort;
    	return find_if( datenbank.begin(), datenbank.end(), suche_datensatz_praedikat(suchwort) );
    }
    
    int main()
    {
        vector<Adresse> datenbank;
    	lade_datenbank(datenbank);
    
        char eingabe;
        do
        {
    		cout << "Daten auf Bildschirm ausgeben (1)" << '\n';
            cout << "Datensatz eingeben            (2)" << '\n';
            cout << "Datensatz suchen              (4)" << '\n';
            cout << "Datensatz löschen             (6)" << '\n';
            cout << "Programm beenden              (0)" << '\n';
            cout << "Ihre Eingabe: ";
            cin >> eingabe;
    
            switch( eingabe )
            {
                case '1':
                {
    				ausgabe_tabelle(cout,datenbank);
                    break;
                }
                case '2':
                {
    				Adresse a;
    				cin >> a;
    				datenbank.push_back(a);
                    break;
                }
                case '4':
                {
    				vector<Adresse>::const_iterator it = suche_datensatz(datenbank);
    				if( it!=datenbank.end() )
    				{
    					cout << endl << *it;
    				}
    				else
    				{
    					cout << "Kein Treffer!";
    				}
                    break;
                }
                case '6':
                {
    				vector<Adresse>::const_iterator it = suche_datensatz(datenbank);
    				datenbank.erase(it);
                    break;
                }
                case '0':
                {
    				speichere_datenbank(datenbank);
                    break;
                }
            }
        }while( eingabe!='0' );
    }
    

    Was du dir unbedingt anschauen solltest:
    1. Kontrollstrukturen
    2. call by value und call by reference
    3. Den Spezialcontainer std::string und auch was der Unterschied zwischen getline und >> bei einer Stringeingabe ist.
    4. Den STL Container std::vector.
    5. Dateiverarbeitung (ofstream und ifstream). Vor allem wie man korrekt aus einer Datei ließt.
    6. Operatorüberladung (http://www.c-plusplus.net/forum/232010)
    7. (find_if und iteratoren würd ich erstmal hinten anstellen, 1-6 genügt ja bereits für einen Anfänger.)

    Viel Spaß die nächsten Stunden/Tage. 😉



  • tabtaste schrieb:

    hey ich hab jetzt mal ein c++ buch gelesen

    Hoffentlich hats auch was gebracht. 😉



  • hi
    das funktioniert schon alles ganz gut
    einzig was ich nicht verstehe ist, wie ich einfüge das beim einspeichern der daten vom pogramm sowas eingezigt bekomme wie

    name:

    und das ich dann das eingebe

    also das mir gezeigt wir was ich einzugeben habe und das ich bei plz zb nur zahlen zulasse

    lg
    tabtaste



  • Tabtaste schrieb:

    Wir sollen als Datenbank der ganzen Namen und Adressen Ein ADT verwenden.

    unter der Abkürzung ADT versteht man lt. Wiki u.a. 'Abstrakter Datentyp'. Wobei mir überhaupt nicht klar ist, wo man bei einer Anfängerübung mit Adressbuch einen abstrakten Datentyp braucht.

    Gruß
    Werner



  • @werne ne das verstehe ich auch nicht.

    tabtaste schrieb:

    einzig was ich nicht verstehe ist, wie ich einfüge das beim einspeichern der daten vom pogramm sowas eingezigt bekomme wie

    name:

    und das ich dann das eingebe

    also das mir gezeigt wir was ich einzugeben habe und das ich bei plz zb nur zahlen zulasse

    weiß denn jemand wie das geht?

    lg
    tabtaste



  • tabtaste schrieb:

    weiß denn jemand wie das geht?

    Ja.
    Solltest du eigentlich auch wissen, und wenn nicht dann sollte die Eingabe/Ausgabe von Text und Zahlen über die Konsole in den ersten Kapiteln des Grundlagenbuches deiner Wahl beschrieben werden (Stichworte: std::cin, std::cout).



  • pumuckl schrieb:

    Ja.
    Solltest du eigentlich auch wissen, und wenn nicht dann sollte die Eingabe/Ausgabe von Text und Zahlen über die Konsole in den ersten Kapiteln des Grundlagenbuches deiner Wahl beschrieben werden (Stichworte: std::cin, std::cout).

    ja das mit der einfachen ein und ausgabe hab ich doch alles verstanden, weiß nur nicht an welcher stelle ich mir das ins pogramm hau...

    case '2':
                {
                    Adresse a;
                    cin >> a;
                    datenbank.push_back(a);
                    break;
                }
    

    das ist der befehl zum datensatz einlesen, wo soll ich denn da ein "cout" oder mehrere "cout"s einsetzen ?

    oder kommt der befehl cout in

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    

    und wie ich dann die postleitzahl auf 5 zahlen begrenze weiß ich sowieso nicht...kann ich denn überhaupt variablen begrenzen? auf 5 ziffern oder auf eine gewisse anzahl von zeichen ?



  • tabtaste schrieb:

    ja das mit der einfachen ein und ausgabe hab ich doch alles verstanden, [...] oder kommt der befehl cout in

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    

    Nach der Frage würde ich sagen, dass du das mit der einfache Ein/Ausgabe noch nicht wirklich verstanden hast.

    tabtaste schrieb:

    das ist der befehl zum datensatz einlesen, wo soll ich denn da ein "cout" oder mehrere "cout"s einsetzen ?

    Dass die Befehle einfach einer nach dem anderen abgearbeitet werden ist dir bewusst? Quizfrage: willst du die Ausgabe (z.B. das "name:") vor oder nach der Eingabe durch den Nutzer stattfinden lassen?

    tabtaste schrieb:

    und wie ich dann die postleitzahl auf 5 zahlen begrenze weiß ich sowieso nicht...

    Eine Zahl. 5 Ziffern.

    kann ich denn überhaupt variablen begrenzen? auf 5 ziffern oder auf eine gewisse anzahl von zeichen ?

    Jein. Zahlen kann man nicht begrenzen. Zeichenketten schon. Was der User eingibt, kannst du natürlich nicht vorher kontrollieren, erst nachdem er es eingegeben hat. Für die Eingabe von Zahlen und Fehlerbehandlung bei der Eingabe sollte es im Buch deiner Wahl aber auch mindestens ein beispiel geben.



  • okay...

    natürlich vor der eingabe das ist mir bewusst! aber wenn ich einen datensatz eingebe also im pogramm die 2 drücke und dann zum eingeben komme, muss ich 4 mal was eingeben und 4 mal enter drücken

    case '2':
                {
                    Adresse a;
                    cout << strasse;
                    cout << hausnummer
                    cout << postleitzahl
                    cout << wohnort
                    cin >> a;
                    datenbank.push_back(a);
                    break;
                }
    

    wenn ich das so eingebe, würde er mir doch einfach die 4 sachen unter einander schreiben....

    ich will aber das er ausgibt "strass" ich was eingebe , und dann erst kommt hausnummer

    Jein. Zahlen kann man nicht begrenzen. Zeichenketten schon. Was der User eingibt, kannst du natürlich nicht vorher kontrollieren, erst nachdem er es eingegeben hat. Für die Eingabe von Zahlen und Fehlerbehandlung bei der Eingabe sollte es im Buch deiner Wahl aber auch mindestens ein beispiel geben.

    das ist ja genau das was ich möchte... das er mir wenn ich als plz 6 zahlen eingebe das er zb sagt "das ist keine plz" ....



  • tabtaste schrieb:

    ich will aber das er ausgibt "strass"

    Dann solltest du das ausgeben, und nicht den inhalt irgendeiner Variablen, die zufälligerweise so heißt.

    ... ich was eingebe , und dann erst kommt hausnummer

    Wenn du zwischen deinen Ausgaben Eingaben haben möchtest, dann musst du wohl zwischen den Ausgaben mit cin was einlesen. Kann doch nicht so schwer sein?

    Für die Eingabe von Zahlen und Fehlerbehandlung bei der Eingabe sollte es im Buch deiner Wahl aber auch mindestens ein beispiel geben.

    das ist ja genau das was ich möchte... das er mir wenn ich als plz 6 zahlen eingebe das er zb sagt "das ist keine plz" ....

    Dann würde ich sagen, such nach dem entsprechenden beispiel im Buch deiner Wahl. Aber frag bitte nicht wie du das abtippen sollst...



  • kann es sein das ich in diesem forum falsch bin?
    ich muss nochmal betohnen das ich absoluter anfänger bin und mir jetzt auf eigenem wege das bei grbracht habe...
    ich weiß zwar nciht ob das gut ist aber ich könnte in c++ einen taschenrechner schreiben, das mit jeglichen schleifen hab ich verstanden, mit funktionen und der variabeln übergaben .. call by valiu und call by raference.. etc. etc.
    nur jetzt bekomme ich ne aufgabe gestellt, wo ich eine datenbank einsetzen soll und damit quasi ein adressbuch schreiben soll... und ich versteh nur noch bahnhof!
    ich versteh noch nicht mal warum ich ne datenbank brauche... ich hab so zusagen 3 bücher meiner wahl unter anderem das c++ buch in wikibooks und ich finde da nichts was mir in meinem fall helfen könnte! jetzt hat mir ein kollege gesagt versuch es doch mit mysql, dass ist leichter... und jetzt bin ich glaube ich fast an dem punkt wo ich zu meinem prof gehe und das fach schiebe oder abwähle... ich versteh die aufgabe nicht und finde NIX darüber...



  • okay ein letzter versuch, dann hör ich auf hier im Forum zu nerven!
    Das ist meine Aufgabe. Unter Umständen habe ich sie ja falsch verstanden!

    Die Aufgabe ist, eine Studierendenverwaltung zu implementieren. Als
    Entwicklungsumgebung soll Microsoft Visual Studio 2010 Express (für C++ )
    verwendet werden. Wir gehen von einer maximalen Anzahl von 2000 Studierenden
    aus. Für jeden Studierenden sollen die folgenden Daten soweit es geht erfasst
    werden.

    Matrikelnummer
    Name
    Vorname
    Adresse mit
    o Straße
    o Hausnummer
    o Postleitzahl und
    o Ort/Stadt
    Telefon mit
    o Mobilnummer
    o Festnetznummer
    E-Mail
    Studiengang (mit Start des Studiums),
    Praxispartner
    o Firma mit Adresse
    Straße
    Hausnummer
    Postleitzahl und
    Ort/Stadt
    o Ansprechpartner beim Praxispartner
    Mobilnummer
    Festnetznummer
    E-Mail

    Die erhobenen Daten sollen auf Festplatte gespeichert werden. Bei einem Neustart
    des Programms sollen die gespeicherten Daten von der Festplatte zunächst geladen
    werden, so dass ein zusätzlicher Eintrag anschließend eingegeben werden kann.
    Die Ausgabe eines Datensatzes (alle Angaben eines Studierenden) soll auf einer
    Bildschirmseite dargestellt werden.

    Es soll ebenfalls möglich sein, einen Datensatz zu suchen respektive zu finden
    und zwar entweder über a) die Matrikelnummer, b) den Namen c) den Vornamen
    oder d) Praxispartner. Gibt es mehrere Suchresultate (Treffer), sollen diese immer
    vollständig und dann nacheinander ausgegeben werden. Des Weiteren soll es
    möglich sein, einen Datensatz zu ändern und auch zu löschen.

    Das ganze Programm soll über eine Menüsteuerung zu bedienen
    sein. Es müssen also folgende Menüpunkte realisiert werden:

    Daten eingeben
    Daten auf Bildschirm ausgeben
    Daten von HD lesen
    Datensatz suchen
    Daten auf HD speichern
    Datensatz löschen
    Datensatz ändern

    Hinweise

    Die Daten sollten in einem Abstrakten Datentyp (ADT) erfasst werden. Einen oder
    auch mehrere struct wäre hier hilfreich.

    Die Studierenden sollten ein einem Feld (Array) vom Typ struct verwalten werden.

    Die Funktionen fscanf und fprintf reichen evtl. nicht aus, um die Daten von
    der HD zu lesen bzw. auf die HD zu schreiben.



  • ich nochmal.. in der funtion zum einlesen

    case '2':
                {
                    Adresse a;
                    cin >> a;
                    datenbank.push_back(a);
                    break;
                }
    

    wo wird da das a deklariert? wenn das der ganze code ist?

    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <fstream>
    #include <vector>
    using namespace std;
    
    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    
    ostream& operator<<(ostream& out, Adresse a)
    {
        out << a.strasse      << ' ';
        out << a.hausnummer   << ' ';
        out << a.postleitzahl << ' ';
        out << a.wohnort      << ' ';
        return out;
    }
    
    istream& operator>>(istream& in, Adresse& a)
    {
        in >> a.strasse;
        in >> a.hausnummer;
        in >> a.postleitzahl;
        in >> a.wohnort;
        return in;
    }
    
    void ausgabe_tabelle(ostream& out, const vector<Adresse>& datenbank)
    {
        for(vector<Adresse>::const_iterator it=datenbank.begin(); it!=datenbank.end(); ++it)
            out << *it << endl;
    }
    
    void lade_datenbank(vector<Adresse>& datenbank)
    {
        ifstream file("db.txt");
        if( file.is_open() )
        {
            for(Adresse a; file>>a; datenbank.push_back(a));
        }
    }
    
    void speichere_datenbank(const vector<Adresse>& datenbank)
    {
        ofstream file("db.txt");
        if( file.is_open() )
        {
            ausgabe_tabelle(file, datenbank);
        }
    }
    
    struct suche_datensatz_praedikat
    {
        string suche;
        suche_datensatz_praedikat(const string& suche) : suche(suche) {}
        bool operator()(const Adresse& a) const
        {
            if( a.hausnummer==suche || a.postleitzahl==suche || a.strasse==suche || a.wohnort==suche )
                return true;
            return false;
        }
    };
    vector<Adresse>::const_iterator suche_datensatz(const vector<Adresse>& datenbank)
    {
        cout << endl << "Suchwort: ";
        string suchwort;
        cin >> suchwort;
        return find_if( datenbank.begin(), datenbank.end(), suche_datensatz_praedikat(suchwort) );
    }
    
    int main()
    {
        vector<Adresse> datenbank;
        lade_datenbank(datenbank);
    
        char eingabe;
        do
        {
            cout << "Daten auf Bildschirm ausgeben (1)" << '\n';
            cout << "Datensatz eingeben            (2)" << '\n';
            cout << "Datensatz suchen              (4)" << '\n';
            cout << "Datensatz löschen             (6)" << '\n';
            cout << "Programm beenden              (0)" << '\n';
            cout << "Ihre Eingabe: ";
            cin >> eingabe;
    
            switch( eingabe )
            {
                case '1':
                {
                    ausgabe_tabelle(cout,datenbank);
                    break;
                }
                case '2':
                {
                    Adresse a;
                    cin >> a;
                    datenbank.push_back(a);
                    break;
                }
                case '4':
                {
                    vector<Adresse>::const_iterator it = suche_datensatz(datenbank);
                    if( it!=datenbank.end() )
                    {
                        cout << endl << *it;
                    }
                    else
                    {
                        cout << "Kein Treffer!";
                    }
                    break;
                }
                case '6':
                {
                    vector<Adresse>::const_iterator it = suche_datensatz(datenbank);
                    datenbank.erase(it);
                    break;
                }
                case '0':
                {
                    speichere_datenbank(datenbank);
                    break;
                }
            }
        }while( eingabe!='0' );
    }
    


  • würde das dann so richtig sein?

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    
    ostream& operator<<(ostream& out, Adresse a,b,c,d)
    {
        out << a.strasse      << ' ';
        out << b.hausnummer   << ' ';
        out << c.postleitzahl << ' ';
        out << d.wohnort      << ' ';
        return out;
    }
    
    istream& operator>>(istream& in, Adresse& a,b,c,d)
    {
        in >> a.strasse;
        in >> b.hausnummer;
        in >> c.postleitzahl;
        in >> d.wohnort;
        return in;
    }
    
    case '2':
                {
                    Adresse a;
    		cout << strasse:;
                    cin >> a;
                    Adresse b;
    		cout << hausnummer:;
                    cin >> b;
                    Adresse c;
    		cout << plz:;
                    cin >> c;
                    Adresse d;
    		cout << wohnort:;
                    cin >> d;
                    datenbank.push_back(a);
                    break;
                }
    


  • Nein.

    tabtaste schrieb:

    wo wird da das a deklariert?

    Adresse a; //<---------Hier wird das a deklariert
                    cin >> a;
                    datenbank.push_back(a);
    

    Das bedeutet jedesmal wenn du

    Adresse irgendwas
    

    schreibst deklarierst du eine Variable vom Typ Adresse.
    Du willst jedoch eine Variable vom Typ Adresse und ihren Elementen(keine Ahnung ob das die richtige Bezeichnung ist) Werte zuweisen.
    Auf Elemente von mit struct oder class erzeugten Datentypen greift man mit dem Punktoperator zu.
    Bsp.

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    ...
    Adresse meineErsteAdresse;
    std::cout<<"Bitte geben Sie die Straße ein: ";
    std::cin>>meineErsteAdresse.strasse;
    std::cout<<"\nDie Straße ist "<<meineERsteAdresse.strasse;
    ...
    

    Was out gemacht hat, war die Operatoren << und >> zu überladen um alle Elemente auf einmal zu befüllen(Sicherlich noch aus anderen Gründen aber darauf will/kann ich nicht eingehen).
    Statt

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    
    ostream& operator<<(ostream& out, Adresse a)
    {
        out << a.strasse      << ' ';
        out << a.hausnummer   << ' ';
        out << a.postleitzahl << ' ';
        out << a.wohnort      << ' ';
        return out;
    }
    ...
    Adresse daten;
    ...
    std::cout<<daten;
    ...
    

    kann man auch

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    ...
    Adresse daten;
    ...
    std::cout<<daten.strasse<<' '<<daten.hausnummer<<' '<<daten.postleitzahl<<' '<<daten.wohnort;
    

    schreiben.
    Ich würde an deiner Stelle beim Einlesen von Benutzereingaben(std::cin in diesem Fall) auf die überladenen Operatoren verzichten. So kannst du auch immer vorher etwas ausgeben.
    Beim Einlesen/Schreiben aus/in der/die Datei würde ich sie auf jeden Fall verwenden.

    So, jetzt werden vermutlich die regs kommen und alles zerreisen was ich grad geschrieben hab 😉



  • danke erstmal

    das heißt auf deutsch ich lass den ostream und den istream weg und mach es statdessen so?

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    
    case '2':
                {
                    Adresse a;
    		cout << strasse:;
                    cin >> a.strasse;
                    Adresse b;
    		cout << hausnummer:;
                    cin >> b.hausnummer;
                    Adresse c;
    		cout << postleitzahl:;
                    cin >> c.postleitzahl;
                    Adresse d;
    		cout << wohnort:;
                    cin >> d.wohnort;
                    datenbank.push_back(a);
                    break;
                }
    

    oder fehlt mir das denn das std:: (was bedeutet das denn?)



  • oder so?

    struct Adresse
    {
        string strasse;
    };
    struct Adresse2
    {
        string hausnummer;
    };
    struct Adresse3
    {
        string postleitzahl;
    };
    struct Adresse4
    {
        string wohnort;
    };
    
    ......
                case '2':
                {
                    Adresse a;
    		cout << strasse:;
                    cin >> a.strasse;
                    Adresse2 b;
    		cout << hausnummer:;
                    cin >> b.hausnummer;
                    Adresse3 c[5];
    		cout << postleitzahl:;
                    cin >> c.postleitzahl;
                    Adresse4 d;
    		cout << wohnort:;
                    cin >> d.wohnort;
                    datenbank.push_back(a);
                    break;
                }
    


  • oder so? gott bin ich verwirrt ... 😕 😕 😕

    struct Adresse
    {
        string strasse;
        string hausnummer;
        string postleitzahl;
        string wohnort;
    };
    .............
                case '2':
                {
                    Adresse a;
    		cout << strasse:;
                    cin >> a.strasse;
    		cout << hausnummer:;
                    cin >> a.hausnummer;
    		cout << postleitzahl:;
                    cin >> a.postleitzahl;
    		cout << wohnort:;
                    cin >> a.wohnort;
                    datenbank.push_back(a);
                    break;
                }
    

Anmelden zum Antworten