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.



  • This post is deleted!


  • 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.


Log in to reply