If Else wird nicht beachtet!



  • Hallo,
    habe heute erst mit C++ angefangen und habe direkt ein Problem 😞

    #include <iostream>
    using namespace std;
    #include <cstdlib>

    int main() {

    cout << "Passwort: "; 
    
    int A;
    cin >> A;
    
    cout << "Passwort bestätigen: ";
    
    int B;
    cin >> B;
    
    if (A == B) 
    	cout << "Great!";
    
    
    else 
    	cout << " I am sorry passworts do not match to another!";
    
    
    system("PAUSE");
    return 0;
    

    }

    Das ist mein code aber wenn ich ihn ausführe fragt er mich nach dem passwort und sobalt ich enter drücke wird einfach aller nachfolgender Cout hingeschrieben (außer der cout vom else) und ich soll eine beliebige taste drügen (wegen system('PAUSE')
    Ich möchte allerding eins nach dem anderen haben xD

    Kann mir da jemand helfen?



  • Willst Du Ganzzahlen als Passwort? xD

    Wenn Du beim ersten cin etwas anderes als eine Zahl eingibst, dann wird kein Wert in A gespeichert, dh A bleibt uninitialisiert und cin geht in den Fehlerzustand, was dazu führt, daß das zweite cin sofort fehlschlägt. Was danach passiert ist purer Zufall, da auf die Werte der uninitialisierten A und B zugegriffen wird, was Undefined Behaviour ist.



  • @Swordfish
    Danke für die schnelle Anwort. Mit Zahlen funktioniert es...
    Nur gibt es auch einen Weg Buchstaben als Passwort zu benutzen??



  • Einzelne Zeichen --> Datentyp char für A und B,
    Zeichenketten --> Datentyp std::string aus <string> für A und B.

    Du solltest Dir angewöhnen, bei Benutzereingaben auf Fehler zu prüfen:

    // ...
    int number{};
    std::cin >> number;
    if( !std::cin ) {
        // handle input error
    }
    // ...
    

    oder kompakter:

    // ...
    int number{};
    if( !( std::cin >> number ) ) {
        // handle input error
    }
    // ...
    


  • #include <iostream>
    using namespace std;
    #include <cstdlib>
    #include <string>

    int main() {

    	cout << "Passwort: ";
    
    	char A;
    	A = getchar();
    
    	cout << "Passwort bestätigen: ";
    
    	char B;
    	B = getchar();
    
    	if (A == B)
    		cout << "Perfekt!"<< endl;
    
    
    	else
    		cout << " Passwort stimmt nicht ueberein! Erneut versuchen!" << endl;
    
    
    system("PAUSE");
    return 0;
    

    }

    Ähnliches Problem wie vorhin, die Überpfrüfung ist jetzt leider noch nicht dabei, funktioniert aber auch ohne schon nicht 😂 😬



  • Warum plötzlich getchar()?

    Wenn Du - Hausnummer - den Buchstaben 'x' eingibst und danach Enter drückst, dann ließt das erste getchar() das 'x' und das zweite getchar() ein '\n' (Enter).

    Wass willst Du denn nu wirklich einlesen ... einzelne Buchstaben oder Zeichenketten?

    Aja, schreib bitte über Deinen Code ``` und unter Deinen Code ```. Alternativ markiere Deinen Code und klicke auf </>.



  • Eigentlich eine Zahlenkette aber ich wollte erstmal mit einem Buchstaben anfangen...
    Naja wie gesagt totaler Anfänger.



  • Dieser Beitrag wurde gelöscht!


  • Okey habs geschafft!

    mit Strings hats funktioniert vielen Dank!!



  • Wenn du mit den zahlen nicht rechnen willst, solltest du immer strings nehmen. Postleitzahlen und Telefonnummern sind neben Passwörtern gute Beispiele dafür.