Passwortabfrage über String - do while Schleife funktioniert nicht



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



  • silent_max schrieb:

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

    Ich glaube der Funken ist mal wieder nicht übergesprungen. 🙄



  • silent_max schrieb:

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

    Darum geht es jetzt erst mal noch nicht. Eins nach dem anderen. Im Moment geht es erst mal darum, dass es keinen Sinn macht:

    std::string e = "blabla";
    cin >> e;
    

    zu machen.
    Und das ist das, worauf einige andere Dich seit langer Zeit aufmerksam zu machen versuchen:
    Du musst bei jeder Instruktion in Deinem Programm wissen, wozu sie gut ist, und was Du damit beabsichtigst.
    Und da in Deinem Code immer noch ständig solche sinnlosen Dinge stehen, erweckst Du den Eindruck, dass Du nicht willst oder nicht kannst ...



  • Bei jetzt insgesamt ca. 160 geschriebenen Projekten ist es wohl nicht eine Sache des Wollens sondern eine Sache des Nichtkönnens....

    Ich bin echt kurz davor zu kapitulieren...



  • GanzEinfach... schrieb:

    silent_max schrieb:

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

    Ich glaube der Funken ist mal wieder nicht übergesprungen. 🙄

    Oh ja... (Auch wenn ich's irgendwie lustig finde)
    Die ganze Art und Weise wie silent_max das angeht, ist einfach fundamental falsch. Hab so das Gefühl, er nimmt sich sinnbildlich einen Sack, in der er alle Dinge reintut die er so brauchen kann, und würfelt das dann mehr oder weniger zufällig zu etwas zusammen, was er Programm nennt. Und wenn er meint er hat was vergessen hat, wird das halt nochmal irgendwo zwischen reingeschoben.
    Letzter Schritt ist dann, solange seine Teile hin und her zu schieben, bis es geht, und wenn das nicht klappt fragt er halt nach.

    Du musst Schrittweise und strukturiert rangehen. Und langsam.

    Ich wollte einen Code generieren, mit dem ich ein Passwort abfragen kann.

    Ok, das ist die Aufgabe. Mal ganz ehrlich, wie gehst du so ein Problem an?



  • silent_max schrieb:

    Weil ich es eben einfach so getan habe...

    Du bist ein potentieller Massenmörder.



  • silent_max schrieb:

    Bei jetzt insgesamt ca. 160 geschriebenen Projekten ist es wohl nicht eine Sache des Wollens sondern eine Sache des Nichtkönnens....

    Ich bin echt kurz davor zu kapitulieren...

    Wie schlagen sich die anderen Schüler in Deinem Kurs?

    Und ja, es ist nichts für Dich. Nach ein paar Tagen, vielleicht einer Woche, können totale Anfänger eigentlich schon besser programmieren und verstehen auch was sie da tun.

    Deine Antworten sind oft sehr bezeichnend, z.b. weiter oben als Du angeblich verstanden hast, wie das mit der Variable und der do-while-Schleife funktioniert. Hatte auf mich den Eindruck, als hättest Du dieses Muster (Variable einlesen, dann im Schleifenkopf auf Abbruchbedingung vergleichen) völlig unverstanden in Deinen Werkzeugkasten gepackt um es in Zukunft unreflektiert einzusetzen. Bei kleinen Änderungen an der Aufgabenstellung scheitert dieser Ansatz aber, weil Du den Code nicht entsprechend anpassen kannst.

    Wenn Du wirklich kein Troll bist, tut es mir leid, aber es ist hoffnungslos. Kommst Du nach der Prüfung nochmal mit Programmierung in Berührung?



  • Nein, zumindest habe ich es nicht vor, weiterhin mit der Programmierung zu tun zu haben.

    Die anderen Schüler tun sich da wesentlich einfacher, zu programmieren.



  • Ich habe mir mal die Mühe gemacht dein Programm vollständig zu kommentieren und die Gedanken beschrieben, die du beim verfassen der Zeilen, hättest haben sollen.
    Am besten für dich ist es, dass du in Zukunft ein Kommentar an JEDE Zeile schreibst.
    Lasst dir Zeit bei Kommentar schreiben. Mach dir Gedanken über die Zeile, dass ist der einzige weg es zu lernen.

    #include <iostream> //Ich möchte etwas im Konsolenfenster ausgeben, deswegen binde ich die Bibliothek iostream ein. Mit dieser Bibliothek kann ich die Funktion "cout" benutzen um Text auszugeben.
    #include <string> //Ich möchte die Klasse string verwenden um Texte in meinem Programm zu verarbeiten.
    using namespace std; //Ich möchte nicht jedesmal wenn ich die Funktion cout verwenden ein std:: davor schreiben.
    
    int main() //Das Programm hat einen Anfang, diese Funktion representiert den Anfang.
    {
        string e; //Ich möchte das der Benutzer eine Zeichenkette eingibt, diese soll in e gespeichert werden. Ich habe e als Variabelnamen gewählt, weil es der erste Buchstabe von "Eingabe" ist.
        e = "1306*Vatertag"; //Diese Zeile habe ich einfach so geschrieben, sie hat keine Bedeutung, ich könnte sie genausogut weglassen.
    
        cout << "\n"; //Ich möchte das am Anfang eine Zeile freigelassen wird, ich könnte aber auch die Zeile weglassen.
        cout << "\tPasswortabfrage!\n"; //Ich möchte eine kurze Beschreibung zum Programm machen.
        cout << "\n";//Ich möchte nach der Beschreibung eine Zeile freilassen um die Ausgabe übersichtlicher zu gestalten.
    
        do //Ich möchte eine Programmabschnitt haben der sich wiederholt, wie lange sich dieser Abschnitt wiederholt bestimme ich am Ende dieser Schleife.
        {
            cout << "Wie lautet das Passwort?\n"; //Ich möchte den Benutzer auffordern ein Passwort einzugeben.
            cin  >> e; //Ich möchte die Eingabe des Benutzers in e Abspeichern, damit ich später damit Arbeiten kann.
            if(e=="1306*Vatertag") //Wenn der Benutzer "1306*Vatertag" eingibt, möchte ich eine Ausgabe "Richtig eingegeben" vornehmen.
                cout << "Richtig eingegeben"; //Ausgabe von Richtig eingegeben
            else //Falls der Benutzer irgendetwas anderes als "1306*Vatertag" eingibt, dann möchte ich ihm mitteilen, dass seine Eingabe falsch gewesen ist.
                cout << "Nicht richtig eingegeben!\n"; //Ausgabe von "Nicht richtig eingegeben!\n"
        }while(e!="1306*Vatertag"); //Ich möchte, solange die Passworteingabe falsch ist, eine neue Passworteingabe erfolgt. Dafür prüfe ich ob sich seine Eingabe von dem Passwort unterscheidet.
        return 0; //Das Programm endet hier.
    }
    

    Die Kommentare könnten umfangreicher sein und teilweise sind sie nicht optimal, aber es ist der erste Schritt für dich funktionierenden Code zu schreiben.



  • Das Passwort was hier in den Code-Schnipseln mehrfach gepostet wurde entspricht dem Forum-Login des Threaderstellers.

    Ich habe es nur spaßeshalber mal ausprobiert und konnte meinen Augen nicht glauben. 😮



  • lol? schrieb:

    Das Passwort was hier in den Code-Schnipseln mehrfach gepostet wurde entspricht dem Forum-Login des Threaderstellers.

    Ich habe es nur spaßeshalber mal ausprobiert und konnte meinen Augen nicht glauben. 😮

    LOOOOOL, hab's auch gerade probiert.
    O-M-F-G 😃


Anmelden zum Antworten