Passwortabfrage über String - do while Schleife funktioniert nicht



  • silent_max schrieb:

    Edit:

    Wer ist eigentlich noch der Meinung, dass ich nur Scheiße produziere??????

    Ich



  • silent_max schrieb:

    Wer ist eigentlich noch der Meinung, dass ich nur Scheiße produziere??????

    Man sieht Deinem Code einfach an, dass Du sogar die einfachsten Sprachmittel nicht verstanden hast und so gut wie nichts über den Programmablauf weißt.

    Ein Beispiel, erkläre mal bitte diese Zeilen:

    string e;
    e = "1306*Vatertag";
    

    Warum exakt belegst Du e mit diesem Wert an dieser Stelle?



  • GanzEinfach... schrieb:

    Ein Beispiel, erkläre mal bitte diese Zeilen:

    string e;
    e = "1306*Vatertag";
    

    Warum exakt belegst Du e mit diesem Wert an dieser Stelle?

    string e : e soll vom Typ String sein
    e="1306*Vatertag : In der Stringvariablen e soll das Wort 1306*Vatertag stehen

    Wobei man auch string e = "1306*Vatertag schreiben hätte können.

    Oder liege ich falsch????????????



  • Damit beschreibst du was du machst, nicht warum du es machst.
    (Dieses Missverständnis ist eins deiner Probleme)

    Warum also machst du das?
    Warum weist du an dieser Stelle der Variablen e diesen bestimmten Wert zu?



  • DirkB schrieb:

    Warum weist du an dieser Stelle der Variablen e diesen bestimmten Wert zu?

    Weil man der Stringvariablen e "nur" einen Text übergeben kann



  • silent_max schrieb:

    Weil man der Stringvariablen e "nur" einen Text übergeben kann

    Du weichst aus.

    Die Frage war, warum du überhaupt dieses "Wort" dem String zuweist... Wieso tust du das?

    <:xmas2:>



  • silent_max schrieb:

    Hier einmal der Code, den ich geschrieben habe:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	string Passwort;
    	Passwort = "1306*Vatertag";
    	int number;
    
    	cout << "\n";
    	cout << "\tPasswortabfrage!\n";
    	cout << "\n";
    
    	cout << "Wie lautet das Passwort?\n";
    	cin  >> Passwort;
    	
    	do
    	{
    		if(Passwort=="1306*Vatertag")
    			cout << "Richtige eingegeben";
    		else
    			cout << "Nicht richtig eingegeben!\n";
    	}while(number!=0);
    	return 0;
    }
    

    Wenn ich jedoch number mit 0 initialisier, dann läuft die do ... while Schleife nur einmal durch.

    Wo ist mein Denkfehler?

    Ich gehe noch einmal konkret auf Deine Frage ein:

    ...
    	}while(number!=0);
    ...
    

    Bedeutet: Solange number ungleich 0 ist. Da Du number mit 0 initialisiert hast, ist number nicht ungleich 0, deshalb wird die Schleife sofort beendet.



  • Angeklagter, warum haben Sie das Opfer erstochen?

    Ich bin hingegeangen und habe ihm das Messer in ihn reingesteckt.
    (So war deine erste Antwort)

    Das wissen wir, aber warum haben sie das gemacht?

    Weil man mit einem Messer nicht schiessen kann.
    (So war deine zweite antwort)

    Das hohe Gericht möchte aber dein Motiv wissen.
    (Notwehr, Eifersucht, Raubmord)



  • glühnase schrieb:

    silent_max schrieb:

    Weil man der Stringvariablen e "nur" einen Text übergeben kann

    Du weichst aus.

    Die Frage war, warum du überhaupt dieses "Wort" dem String zuweist... Wieso tust du das?

    <:xmas2:>

    Meint ihr, warum ich das persönlich mache oder warum man das allgemein so macht oder auf was wollt ihr hinaus?



  • DirkB schrieb:

    Das hohe Gericht möchte aber dein Motiv wissen.
    (Notwehr, Eifersucht, Raubmord)

    Weil ich es eben einfach so getan habe...



  • Warum machst Du das in diesem Fall?
    Deutlicher:
    Warum weist Du e überhaupt irgendetwas zu?
    Warum tust Du es an dieser Stelle?
    Warum weist Du e genau diesen Inhalt zu?



  • silent_max schrieb:

    Meint ihr, warum ich das persönlich mache oder warum man das allgemein so macht oder auf was wollt ihr hinaus?

    Wir würden hier nicht so fragen, wenn das wirklich alle so machen.

    Wobei es hier speziell um diesen Fall geht.

    Es geht nicht darum, dass man i.A. Variablen initialisiert.

    Warum hast du in diesem Fall, dieser Variablen diesen Wert zugewiesen?



  • silent_max schrieb:

    DirkB schrieb:

    Das hohe Gericht möchte aber dein Motiv wissen.
    (Notwehr, Eifersucht, Raubmord)

    Weil ich es eben einfach so getan habe...

    Okay, jetzt haben wir es glaube ich alle verstanden ...



  • silent_max schrieb:

    Meint ihr, warum ich das persönlich mache oder warum man das allgemein so macht oder auf was wollt ihr hinaus?

    Allgemein macht man das nicht. Die Frage zielt darauf ab, ob du verstehst, was du machst.

    Wenn du das tust, solltest du in der Lage sein, ihn zu erklären. Erkläre daher mal, welchen Sinn die Zuweisung Passwort = "1306*Vatertag"; in deinem ganzen Programm hat.

    <:xmas2:>



  • silent_max schrieb:

    DirkB schrieb:

    Das hohe Gericht möchte aber dein Motiv wissen.
    (Notwehr, Eifersucht, Raubmord)

    Weil ich es eben einfach so getan habe...

    Das demonstriert sehr gut den Kern deines Problems. Aber antworte mal auf glühnase.



  • Belli schrieb:

    Warum machst Du das in diesem Fall?
    Deutlicher:
    Warum weist Du e überhaupt irgendetwas zu?
    Warum tust Du es an dieser Stelle?
    Warum weist Du e genau diesen Inhalt zu?

    Weil ich brauche ja eine Referenzvariable, mit der die Eingabe des Passwortes vergllichen wird...

    Und deswegen habe ich durch string e; und e=1306*Vatertag; erstellt, damit in der do...while Schleife der eingegebene Text mit dem Wert von e in der if Schleife verglichen werden kann...

    Ich hoffe, dass ich mich jetzt klar ausgedrückt habe?



  • Was hätte sich an deinem Programmablauf geändert, wenn du e mit
    e= "Mistwetter"
    initialisiert hättest?



  • Ja, hast Du ... endlich!
    Jetzt weiter:
    In der Folge kommt in Deinem Programm:

    cin >> e;
    

    und zwar, bevor Du irgendetwas mit e machst. Damit bekommt e einen neuen Inhalt, und Deine ursprüngliche Zuweisung ist völlig überflüssig und sinnlos!



  • silent_max schrieb:

    Und deswegen habe ich durch string e; und e=1306*Vatertag; erstellt, damit in der do...while Schleife der eingegebene Text mit dem Wert von e in der if Schleife verglichen werden kann...

    Wo vergleichst du den eingegebenen Wert mit e?

    if(e=="1306*Vatertag")
    

    vergleicht e mit einer Konstante.
    Also, wo tust du das? Du sagst du willst e mit dem eingegebenem Wert vergleichen. Wo machst du das? Wo ist etwas in der Art

    if(eingabe==e)
    

    ?



  • Belli schrieb:

    Ja, hast Du ... endlich!
    Jetzt weiter:
    In der Folge kommt in Deinem Programm:

    cin >> e;
    

    und zwar, bevor Du irgendetwas mit e machst. Damit bekommt e einen neuen Inhalt, und Deine ursprüngliche Zuweisung ist völlig überflüssig und sinnlos!

    Stimmt... cin >> e muss ja dann auch in der do...while Schleife sein...


Anmelden zum Antworten