Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen)



  • Hi,
    stehe vor folgender Aufgabenstellung und würde um eure Hilfe bitten beim lösen:

    *Schreiben Sie eine Funktion PruefePasswort(), der als Parameter das Sollpasswort übergeben wird. Die Funktion liest ein Passwort von der Konsole ein und vergleicht das eingelesene Passwort mit dem als Parameter übergebenen Sollpasswort. Stimmt das Passwort überein, liefert die Funktion true (kein Fehler) zurück, ansonsten gibt die Funktion false (Fehler) zurück.
    Fordern Sie in Ihrem Hauptprogramm (in main()) den Benutzer zur Eingabe des Passwortes auf und rufen Sie die Funktion PruefePasswort() auf. Geben Sie entsprechend dem Rückgabewert der Funktion entweder
    Passwort falsch aus oder Passwort korrekt aus.

    Beispiel für den Benutzerdialog, wenn das Passwort richtig ist:
    Geben Sie das Passwort ein: !12345?
    Passwort korrekt
    Schreiben Sie eine Testfunktion, zum Überprüfen der korrekten Funktion von PruefePasswort(). *

    Ich steh wie im Walde und habe keine Ahnung wie ich das ganze überhaupt angehen soll. Wenn mir einer Helfen könnte bei der Lösung wäre ich wirklich sehr dankbar.

    ich bin jetzt mal so weit aber checke nicht wirklich was ich da mache und zweitens wie ich das Passwort festlegen kann/soll.

    string pruefePasswort(string passwort)
    {
    return (passwort);
    }

    int main()
    {
    string text;
    bool richtig;

    cout << "Bitte Passwort eingeben: " << endl;
    cin >> text;
    text = pruefePasswort(text);
    //richtig = (text == passwort);
    
    if (richtig)
    {
    	cout << "Passwort korrekt" << endl;
    }
    
    else
    {
    	cout << "Falsches Passwort!" << endl;
    }
    
    system("Pause");
    return 0;
    

    }



  • Lies noch mal genau, was die Funktion PruefePasswort tun soll (auch wenn das design-technisch schlecht ist)...



  • Zuerst einmal, die Aufgabe ist nicht sauber formuliert.

    ...eine Funktion PruefePasswort(), der als Parameter das Sollpasswort übergeben wird... und weiter ... Die Funktion liest ein Passwort von der Konsole ein ...

    Danach aber ...Fordern Sie in Ihrem Hauptprogramm (in main()) den Benutzer zur Eingabe des Passwortes auf und rufen Sie die Funktion PruefePasswort() auf...

    Um dem Gerecht zu werden, gebe in der Main die "Aufforderung" aus und springe dann in die Funktion pruefePasswort(text) mit dem Sollpasswort, welches Du in der Main definiert hast.

    In der Funktion pruefePasswort(text) lässt Du den Nutzer ein Passwort in eine String eingeben, welches dann mit dem übergebenen Sollpasswort verglichen wird. Wenn gleich wird "richtig", ansonsten "falsch" zurückgeliefert.

    Anhand des Rückgabewertes von pruefePasswort(text)... hast Du ja schon.

    Ansonsten frag den Ausbilder nochmal.



  • @Moglie12 sagte in Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen):

    Stimmt das Passwort überein, liefert die Funktion true (kein Fehler) zurück, ansonsten gibt die Funktion false (Fehler) zurück.

    Welcher Typ bietet sich für den Wertebereich true/false an?



  • @DirkB sagte in Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen):

    @Moglie12 sagte in Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen):

    Stimmt das Passwort überein, liefert die Funktion true (kein Fehler) zurück, ansonsten gibt die Funktion false (Fehler) zurück.

    Welcher Typ bietet sich für den Wertebereich true/false an?

    Der Typ bool ist wohl was du suchst.



  • Mensch @VLSI_Akiko , ich glaube @DirkB fragte @Moglie12 😀



  • @Helmut-Jakoby sagte in Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen):

    Mensch @VLSI_Akiko , ich glaube @DirkB fragte @Moglie12 😀

    Ich weiß, aber ich sah das nun schon seit 30 Minuten dastehen, aber ohne Antwort. Da wurde dann das Jucken in den Fingern zu groß. 😅 Aber warte, ich kann es ja noch um einen moderneren Ansatz ergänzen. Zum Beispiel verwende ich gerne komplexe Rückgabewerte (inspiriert von Python oder GO):

    using Result = std::tuple<bool,std::string>;
    

    Kann man dann so nutzen:

    Result machmal()
    {
        return {false, "Passwort passt nich"}; // oder return {true, ""}; oder return {true, "Passwort ist ein bissel zu kurz"};
    }
    


  • Hi @VLSI_Akiko , schick🙃 ✌ ! Hallo @Moglie12, lass Dich nicht verwirren, nimm das vorgeschlagen bool.



  • @Helmut-Jakoby sagte in Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen):

    Hallo @Moglie12, lass Dich nicht verwirren, nimm das vorgeschlagen bool.

    Dann aber auch als Rückgabetyp von pruefePasswort()



  • Hi @DirkB , ja, natürlich. Ist ggf. falsch rüber gekommen, weil ich im ersten Beitrag von "richtig" und "falsch" gesprochen habe. Und das mit Gänsefüßchen 🙂 was ja als String interpretiert werden kann. War aber mehr als Pseudocode gedacht.
    Aber

    bool richtig,
    

    hatte der gute @moglie12 ja schon in seiner Main definiert. Das meinte ich mit dem vorgeschlagenen bool.



  • Hallo Leute, vielen Dank für die Rückmeldung. Genau das Problem ist es auch welches ich habe. Ich komme einfach mit den Aufgabenstellungen nicht klar. Ich dachte immer es liegt einfach an mir oder an meinen fehlenden Programmierkenntnissen, dass ich einfach keinen schimmer habe das gefragte umzusetzen.

    Naja aus den Antworten konnte ich leider auch nicht viel rauslesen was es mir leichter macht.

    Das Problem ist, ich kann niemanden fragen da ich die Prüfung nachschreibe und offiziell keinen Unterricht mehr habe in der Schule. Der Dozent der C++ Unterrichtet hatte ist leider auch nicht mehr auf der Schule. So stehe ich jetzt da mit diesem Übungsblatt und dem Internet als Hilfe um mich auf die Prüfung in ein paar Wochen optimal vorzubereiten.

    Okay zur Aufgabe: Habe ich denn den Teil mit der Funktion erstellen richtig umgesetzt?
    Fragen die mir während des "Programmierens" gekommen sind:

    • Wie rufe ich die Funktion auf? Bzw. woher weiß ich wann der richtige Zeitpunkt ist die Funktion aufzurufen?
    • Wie setzt man es um, ein Passwort vorher in der Funktion festzulegen und dieses dann im Hauptprogramm abzufragen?
    • Ist die If/Else Funktion in der Funktion oder im Hauptprogramm richtig positioniert? Wenn ich sie in die Funktion packe, wie rufe ich das dann in der main Funktion auf? Bzw,. brauche ich dann in der mainfunktion nicht noch einmal genau die gleiche if/else abfrage nochmal oder wie funktioniert das?
    • Bool true/false ist doch denke ich die richtige Funktion um die EIngabe zu überprüfen oder habe ich da was falsch gemacht?

    Wie würde denn das Programm oder Code richtig aussehen laut Aufgbanstellung?
    Ich habe hier noch einige Aufgaben mehr welche ich stellen könnte falls jemand Lust und Zeit hat mir zu helfen wäre ich unglaublich dankbar!



  • @Helmut-Jakoby hat doch beschrieben, wie das umzusetzen ist.

    Also nochmal:

    • In main():
      1. Sollpasswort vom Anwender eingeben lassen
      2. pruefePasswort mit diesem Sollpasswort aufrufen und Rückgabewert entgegennehmen
      3. Rückgabewert auswerten und entsprechenden Text ausgeben
    • pruefePasswort mit bool als Rückgabetyp und string als Parameter (für Sollpasswort):
      1. Passwort vom Anwender eingeben lassen
      2. Passwort mit Sollpasswort vergleichen und trueoder false zurückgeben

    Das solltest du jetzt umsetzen können...



  • bool pruefePasswort(string passwort)
    {

    passwort == "hans";
    passwort = true;
    
    if (passwort)
    {
    	cout << "Passwort korrekt" << endl;
    }
    
    else
    {
    	cout << "Falsches Passwort!" << endl;
    }
    

    }

    int main()
    {
    string text;
    bool Richtig;

    cout << "Bitte Passwort eingeben: " << endl;
    cin >> text;
    
    pruefePasswort(text, Richtig);
    
    
    system("Pause");
    return 0;
    

    }

    Sorry aber ich stehe irgendwie auf dem schlauch da der Compiler mir "passwort" in der Funktion und "Richtig" in der main unterstreicht. Wie kann ich denn bool richtig in die funktion integrieren? Und ist es korrekt das Passwort "hans" in der Funktion als richtiges passwort festzulegen?



  • Mit welchem Buch lernst du überhaupt C++?

    Du gibst bisher keinen Wert in der Funktion zurück (und auch der Inhalt ist nicht das, was ich dir beschrieben habe) und der Aufruf ist auch falsch bzgl. des Rückgabewertes.

    Ich hatte neulich schon mal diesen Link in einem anderen Thema gepostet: C++-Programmierung/ Weitere Grundelemente/ Prozeduren und Funktionen, damit du verstehst, wie man Funktionen definiert und aufruft.



  • @Moglie12 sagte in Benötige Hilfe beim erstellen des Programms "Passwortprüfung" (string-Klasse, Funktionen):

     bool pruefePasswort(string passwort)
     {
     	
     	passwort == "hans";
     	passwort = true;
            ...
    
    

    Dir fehlen wichtige Grundlagen in C++, außerdem verstehst Du ganz offensichtlich nicht mal die Aufgabenstellung?!
    Keine Ahnung, wo man da anfangen soll ...



  • Ich habe nie behauptet das ich programmieren kann und deswegen habe ich mich hilfesuchend hier angemeldet.
    Ist es denn nicht möglich die Aufgabenstellung zu lösen oder anhand meines Codes mir mitzuteilen was ich falsch gemacht habe oder was noch ergänzt werden muss?

    Für wen soll es an dieser Stelle Hilfreich sein, mir zu sagen das ich davon keine Ahnung habe? Ich habe ne Prüfung zu bestehen und mache das was mir möglich ist und habe hier auf Hilfe gehofft...



  • @Moglie12
    bitteschön (aber es wird Dir am langen Ende nicht helfen):

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    bool PruefePasswort(const string &Sollpasswort)
    {
       string inPasswort;
       
       getline(cin, inPasswort);
       
       if(Sollpasswort == inPasswort)
          return true;
       else
          return false;   
    }
    
    
    int main()
    {
       const string Sollpasswort("PiPaPo"); // Dies ist das Passwort, das eingegeben werden muss
       
       cout << "Geben Sie das Passwort ein: ";
       
       if(PruefePasswort(Sollpasswort))
          cout << "\nPasswort korrekt";
       else
          cout << "\nPasswort falsch";
    }
    


  • @Belli ! Du kannst einfach andere nicht leiden sehen.



  • @Belli Vielen vielen Dank!
    Anhand des Codes stellen sich mir ein paar Fragen:

    • Zeile 6. Warum &Sollpasswort? Was hat das & zu bedeuten bzw. wieso hast du dieses für die Funktion genutzt?
    • Zeile 10. Was hat der getline Befehl zu bedeuten? Ist das für die Funktion, dass hier eine Eingabe in der main erwartet wird?
    • Zeile 12 Wieso hier der Vergleich? Sollpasswort == inPasswort?
    • Zeile 21 Da legst du quasi das Passwort fest, das vom Nutzer eingegeben werden soll. Frage geht das auch schon in der Funktion?

    Vielen Dank jedenfalls nochmal Belli und auch den anderen die Ihr Glück versucht haben mir zu helfen. Wie gesagt ich habe nie gesagt ich kann Programmieren und für viele unter euch sind solche Aufgaben oder auch die Aufgabenstellungen Täglich Brot. Ich tue mir damit sehr schwer aber was soll ich machen? Die Flinte ins Korn werfen, weil Coden nicht zu meinen Hobbys gehört? Wie gesagt ich habe ne Prüfung zu bestehen und wenn ich verkacke dann ist das eben so aber ich kann nicht sagen ich habe nicht das gegeben was ich konnte.



  • Mensch @Moglie12 🤔
    Such doch mal ein bisschen selbst; gib z.B. mal in Deiner Suchmaschiene "c++ & Parameter" ein. Du kannst Dich dann mal ganz schnell schlau machen, z.B. hier -> https://www.kompf.de/cplus/artikel/funcpar.html

    Und wenn Du Zeile 12 nicht verstehst, dann weiß ich auch nicht... Irgendwo muss doch dass Passwort verglichen werden um den Nutzer sagen zu können, ob richtig oder falsch. Hast Du die Aufgabe eigentlich selbst mal gelesen oder nur gepostet?


Anmelden zum Antworten