Frage zu einer Aufgabe



  • /*
    11. Entwerfen Sie ein einfaches Kodierungsprogramm, das ein zweidimensionales Array mit 26
    Spalten und 2 Zeilen enthält. Die 1. Zeile soll die Zeichen A - Z, die 2. Zeile - das
    Code-Alphabet, d. h. das um einen bestimmten Wert verschobene "normale" Alphabet
    aus der 1. Zeile - z. B.: 2. Zeile: C D E F G H I J K L M N O P Q R S T U V W X Y Z A B.
    Nun soll ein beliebiger Text eingegeben werden (Eingabeende mit ";"), wobei nur
    Kleinbuchstaben, Großbuchstaben und das Sonderzeichen ";" als Eingabezeichen erlaubt sind,
    alle anderen Zeichen sollen ignoriert werden. Wenn das Zeichen ";" eingegeben wird, soll das
    Programm den kodierten (ausgetauschten) Text ausgeben und sich beenden.
    */

    Hallo, ich habe wieder eine Aufgabe. Leider versteh ich sie nicht ganz. Meinen Professor kann ich auch nicht fragen, weil sie eigentlich noch nicht offiziell sind. Deshalb wollt ich euch fragen. Das mit den Arrays und so versteh ich. Aber das mit der Eingabe geht etwas an mir vorbei. Er möchte das ich etwas eingebe und dann soll jeder eingegebene Buchstabe um eine x Zahl verschoben werden?

    Wie würdet ihr diese Aufgabe verstehen?

    Mit besten Grüßen und vielen Dank.



  • Zwei Zeilen:

    ABCDE ....
    HIJKL ....
    

    Wenn nun die Eingabe lautet:
    CAB
    dann musst Du ausgeben:
    JHI



  • moses030 schrieb:

    Aber das mit der Eingabe geht etwas an mir vorbei.

    Ist so wie bei deinem Passwortprogramm.

    Die Codierung ist unter der Bezeichnung Caesar-Verschlüsselung bekannt.



  • Super, cool! Bedanke mich bei euch!
    Hab ich etwas womit ich Anfänge! Danke euch!!

    Schönen Abend euch!



  • Also so super cool ist das doch nicht...

    Ich hab jetzt nen array [2][26] so wie er es wollte...

    mit den Zeichen A-Z drin und D-C also ebend versetzt.

    Ich werde jetzt eben die eingabe einscanen.
    Mein Plan ist es:

    Pseudocode:

    do {
    - Die zeichen einzelnen einscannen und direkt zu überprüfen ob Groß oder kleines alphabet, (es in groß buchstaben umwandeln??? wird das so verlangt in der übung? da ich ja nur großbuchstaben definiert habe)

    - danach würde ich dem sagen, suche dieses zeichen im 1. Array und speichere das neue passende zeichen (aus dem 2. Array) in einer variablen.
    [Nur wie mach ich das??? 😕 😕 ]

    - dann zeichen++
    }
    while (zeichen != ";")

    und dann würde ich printf mit der variable wo alles gespeichert ist...

    So ist der Plan...

    Ich könnte natürlich auch erst den kompletten string einlesen und dann den kompletten string aufeinmal "austauschen" nur hab ich auch da keine Ahnung wie ich das mache 😕

    Ich wäre euch sehr dankbar über hilfestellungen. Mir scheiterts an der umsetzung.. 😕

    Schönes Wochenende 👍



  • Du könntest es ja mal so versuchen:

    for(int i = 0; i < ...; i++) { //Worüber soll hier iteriert werden?
        if(eingabe[i] == ';')
            break;
        for(int j = 0; j < ...; j++) { //Worüber soll hier iteriert werden?
            if(eingabe[i] == alphabet[0][j]) {
                ergebnis[i] = ...; //Welchen Buchstaben (dessen Position) nehmen? 
                break;
            }
        }
    }
    

    Für die Kleinbuchstaben evtl. 'toupper()' in der Abfrage verwenden.
    Man möge mich korrigieren, oder zurechtweisen, falls das Müll ist. 🙂



  • Hallo phf,

    leider kann ich deinem beisiel nicht ganz folgen.

    EIne kurze Erklärung wäre super.

    mfg moses 👍



  • Mal angenommen der Benutzer hat "DIESERTEXTISTTOLL;" eingegeben und du hast das nun in der Variable 'eingabe' stehen, so kannst du mit der verschachtelten for-schleife, wie sie dort steht über die einzelnen Buchstaben von 'eingabe', sowie die einzelnen Buchstaben im Alphabet-String iterieren.

    Beispiel:
    1. i = 0 --> eingabe[i] = 'D' --> j = 0 --> alphabet[0][j] = 'A' --> Ist 'D' == 'A'?
    2. i = 0 --> eingabe[i] = 'D' --> j = 1 --> alphabet[0][j] = 'B' --> Ist 'D' == 'B'?
    3. i = 0 --> eingabe[i] = 'D' --> j = 2 --> alphabet[0][j] = 'C' --> Ist 'D' == 'C'?
    4. i = 0 --> eingabe[i] = 'D' --> j = 3 --> alphabet[0][j] = 'D' --> Ist 'D' == 'D'?
    5. i = 1 --> eingabe[i] = 'I' --> j = 0 --> alphabet[0][j] = 'A' ---> Ist 'I' == 'A'?
    6. ... usw ...

    Da wo in dem Beispiel die '...' stehen muss dann natürlich etwas sinnvolles stehen.

    Ist sicher nicht die beste Veranschaulichung. Verstehst du in etwa den Ablauf?

    Edit: Sollte natürlich alphabet[0][j] lauten.



  • Ja soweit macht das sinn, und verstehen sollte ich es auch denk ich, nur was meinst du mit dem '...' da sollte etwas sinnvolles stehen?

    Das bringt mich ausm konzept..

    also die for schleife, rennt alle zeichen durch und guckt. ok in alph[0] ist es das 'D', was wäre es dann in alph[1]?

    ist das so richtig?

    Danke dir schonmal



  • Jo, ich denke das solltest du hinbekommen. Ob der Eingabetext überhaupt valide ist musst du halt vorher überprüfen, also ob es sich auschließlich um erlaubt Zeichen handelt. (Ausnahme ';')

    Die ... müssen noch ersetzt werden durch Code. Das darfst du dann aber machen. Eine Art Lückentext 😉

    Beispiel Zeile 1:

    for(i = 0; i < ...; i++)

    Wie groß soll i denn werden? Das musst du dir überlegen und dort eintragen.



  • Alles klar phf, ich werds versuchen! Bedanke mich recht herzlich bei dir...

    Grüße!


Anmelden zum Antworten