Aufgabe zu c# Programmmierung finde keine lösung



  • Ein Benutzer soll hintereinander vier einzelne Zeichen (keine Zeichenkette(string)) eingeben können , die ein Passwort darstellen soll. Diese Vier Zeichen sollen nach den Folgenden Kriterien geprüft werden:

    Das Originalpasswort lautet : RXVW

    Wenn der Benutzer dieses Passwort eingegeben hat , soll die Meldung "Login Korrekt" ausgegeben werden. Allerdings ist es dem Benutzer auch erlaubt die vier Zeichen in beliebiger Reihenfolge und in Groß und Kleinbuchstaben einzugeben

    Kann mir jemand die Antwort sagen für c# Vielen Dank im Vorraus



  • Konsole oder Win Forms?



  • WindowsForm



  • Soll nach jeder Eingabe die Textbox gelöscht werden?

    1. Eingabe in einem Array-Char speichern.
    2. Diese Eingabe in Groß-oder Kleinbuchstaben umwandeln.
    3. Diesen Array mit der Vorgabe über eine Schleife vergleichen. Wenn alle 4 Buchstaben darin vorkommen, dann ist das Kennwort Okay, sonst logischerweise nicht.



  • Hi!
    Nach einer halben Stunde oder so Arbeit ist der Code fertig und auf Herz und Nieren getestet.
    Erklärungen folgen unterm Code.

    string[] textBox = new string[4];
    string[] real = new string[4];
    bool[] used = new bool[4];
    bool[] correct = new bool[4];
    real[0] = "R";
    real[1] = "X";
    real[2] = "V";
    real[3] = "W";
    try
    {
        myTextBox.Text = myTextBox.Text.ToUpper();
        for (int i = 0; i < 4; i++)
        {
            textBox[i] = myTextBox.Text.Substring(i, 1);
        }
        for (int m = 0; m < 4; m++)
        {
            for (int k = 0; k < 4; k++)
            {
                if (textBox[m] == real[k] & used[k] == false)
                {
                    used[k] = true;
                    correct[m] = true;
                }
            }
        }
        if (correct[0] == true & correct[1] == true & correct[2] == true & correct[3] == true)
            MessageBox.Show("Login Korrekt!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch
    {
        MessageBox.Show("Es ist ein Fehler aufgetreten.\nBitte überprüfen Sie die Eingabe.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    

    Erklärung:
    Erst deklariere ich zig FeldVariablen um zu überprüfen ob ein Zeichen gebraucht ist, wie es sein muss und wie es ist.
    Dann weise ich den Feldern, wie die Zeichen sein sollen, die 4 Buchstaben zu.
    Im Anschluss mache ich alle zeichen zu Großbuchstaben.
    Dann wird in der 1. Forschleife 4mal die Schleife durchlaufen die Testet ob der Buchstabe mit einem der 4 "real"-Buchstaben übereinstimmt und ob dieser noch nicht gebraucht ist. wenn nein werden ein correct und das used mit dem Index des "real"s auf true gesetzt.

    Nur wenn am Ende alle 4 corrects auf true stehen wird die Meldung ausgegeben.

    Tipps:

    1. Du kannst alle Argumente bei den MessageBoxen weglassen, allerdings nicht einfach eins aus der Mitte. Das Erste muss natürlich bleiben.
    Sie stehen für:

    1. Mitteilungstext

    2. Meldungstitel

    3. Knöpfe

    4. Symbol

    Außerdem gibts noch:

    5. StandardKnopf

    6. Verschiedene Optionen

    2. Wenn du im Designer die Eigsnschaft der TextBox "UseSystemPasswordChar" auf true setzt, sind die Zeichen nicht mehr einsehbar. Du kannst auch bei PasswordChar eib anderes beliebiges Zeichen einstellen

    3. Wenn du das nicht machst, und möchtest, dass der Text in der Box gleichbleibt, speicher Ihn als erstes in einem String und setzt am Ende diesen wieder in die Box.

    4. Um Enter abzufragen klicke bei den Events der Box doppelt in KeyPress und tippe ein:

    if (e.KeyChar == '\r')
    

    dann tipp den Code dort ein oder starte die methode von dort.



  • PS: Setz um den Kram im

    try
    

    -Block eine

    if (myTextBox.Text.Length)
    

    bzw.

    if (myTextBox.TextLength)
    

    Abfrage, weil sonst auch jeder Code durchgeht, der hinten dran ein beliebiges anderes Zeichen hat.

    LG Darius.


Anmelden zum Antworten