do{...}while Schleife will nicht Funktionieren



  • Hallo

    Ich habe versucht ein Menu zu schreiben was aber nicht richtig Funktionieren will hier mal der Code.

    #include <iostream>                 
    #include "Kontakt.h"
    #include <string>
    #include <vector>
    using namespace std; 
    
    int main() {
      vector<kontakte> kon;
      kontakte pos;
      int eingabe;
    
      do{
        cout << "<1> Hinzuf\x81\gen" << endl;
        cout << "<2> Beenden" << endl;
        cout << "Eingabe : ";
        int eingabe;
        cin >> eingabe;
        fflush(stdin);
    
        if(eingabe == 1) {
            cout << endl << "Vorname : ";
            getline(cin,pos.v);
            cout << endl << "Nachname : ";
            getline(cin,pos.n);
            cout << endl << "Email : ";
            getline(cin,pos.e);
            kon.push_back(pos);
            cout << endl << endl << "Dr\x81\ck eine beliebige Taste um zum Menu zur\x81\ck zu kommen...";
            getchar();
          }
    
        }while(eingabe == 2);
    
      return 0;
      }
    

    Die Schleife soll so oft wiederholt werden bis 2 eingeben wurde aber das Programm geht einfach aus wen die if anweisung auch zu ende ist und eigentlich soll es zurück an den anfang springen was es nicht macht..bitte um hilfe.

    Danke im vorraus!



  • Das tut auch nur solange eingabe gleich 2 ist. Verwende den != - Operator.



  • Ja aber dan kommt er gar nicht mehr aus der Schleife raus und es wird zu einer wirklichen endlosschleife.



  • while (eingabe != '2')
    

    Man beachte die Anführungszeichen 😉
    Sonst gibts nämlich ASCII Code 2 und das is ööh ziemlich sicher nicht auf der Tastatur^^



  • Danke für die Antwort
    Jedoch lässt sich das Programm nicht beenden wen man 2 eingibt und das soll ja passieren!

    Ich weiß nicht ob das für euch wichtig ist aber hier ist der Inhalt von der Datei "Kontakt.h" die oben eingebunden ist ist nicht besonders viel ist nur zu Übung gedacht.

    #include <string>
    
    using namespace std;
    
    struct kontakte {
      string v;
      string n;
      string e;
      };
    


  • Joa außerdem wärs hilfreich das zweite

    int eingabe;
    

    in Zeile 16 zu entfernen 😉

    EDIT: Oh und bei if eingabe == 1 natürlich auch ' außenrum^^



  • Danke 😃

    endlich so ein dummer fehler.:)



  • vorrrrraus 😃 versuchs mal mit mit einem.

    ohne

    flush(stdin);
    getchar();
    
    #include <iostream>
    #include <string>
    #include <vector>
    #include "kontakt.h"
    using namespace std;
    
    int main()
    {
    	vector<kontakte> kon;
    	kontakte pos;
        int eingabe;
        bool quit = false;
    
        do
        {
            cout << "<1> Hinzufuegen" << endl;
            cout << "<2> Beenden" << endl;
            cout << "Eingabe : ";
            int eingabe;
            cin >> eingabe;
    
            switch(eingabe)
            {
            case 1:
                cout << endl << "Vorname : ";
                break;
            case 2:
                cout << "Das wars";
                quit = true;
                break;
            default:
                cout << "nicht implementiert" << endl;
            }
        }
        while(!quit);
    
        return 0;
    }
    

    und in selbst erstellten Headern möglichst keine Header im Quelltext.

    using namespace std;
    

    auch in Headern vermeiden versuchen:

    // kontakt.h
    
    struct kontakte {
      std::string v;
      std::string n;
      std::string e;
      };
    

Anmelden zum Antworten