Nimm für den Anfang Strings. Ein String ist übrigens ein Array (ein Array of char), ähnlich zu händeln, aber eben auch mit den üblichen String-Befehlen (pos, copy, length ,etc.) zu verarbeiten.
Zitat von
Waldbärchen:
Schlüsselwort/satz:
DELPHI IST PRIMA
Das schreibst du in ein String Schluessel_brutto.
Zitat von
Waldbärchen:
Das Programm müßte erstmal alle mehrfach vorkommenden Buchstaben wegnehmen:
Dazu gehst du in einer Schleife Schluessel_brutto Zeichen für Zeichen durch und guckst, ob das gerade untersuchte Zeichen im String Schluessel_netto schon vorkommt. Wenn nein, dann das jeweilige Zeichen an Schluessel_netto anhängen. Wenn ja, dann nichts tun. Denke dabei daran, gefundene Leerzeichen in Schluessel_brutto ebenfalls zu überspringen, damit die nicht in Schluessel_netto mit reinrutschen.
So gewinnst du deinen String Schluessel_netto --> DELPHISTRMA
Zitat von
Waldbärchen:
anschließend der (alphabetischen!) Reihenfolge nach prüfen, welche Buchstaben noch nicht da sind und die dann hinten dranhängen:
Zum deinem besseren Verständins gestalten wir diese Aufgabe mal etwas umständlich.
Erzeuge dir einen String Zeichenvorrat mit allen Buchstaben --> ABCDE...usw...XYZ
Jetzt gehst du (wieder in einer Schleife) den String Zeichenvorrat Zeichen für Zeichen durch und guckst, ob das gerade untersuchte Zeichen im String Schluessel_netto schon vorkommt. Wenn nein, dann das jeweilige Zeichen an Schluessel_netto anhängen. Wenn ja, dann nichts tun.
So stellst du deinen Schlüssel fertig --> DELPHISTRMABCFGJKNOQUVWXYZ
Zitat von
Waldbärchen:
zuletzt zum Kodieren und zum Dekodieren jeweils eine Zuordnung zum Klartextalphabet herstellen.
Welche Art Zuordnung soll denn das werden? Beschreibe das mal in deinen Worten.
Zitat von
Waldbärchen:
Weitere Schwierigkeit: Verschiedene Codes benützen nur 25 Buchstaben (I=J), wie z.B. der Playfair-Code.
Vergiss Playfair erstmal, das wäre für dich heute noch zu weit. Grundsätzlich kannst du zu jeder Zeit schauen, ob du gerade ein "J" behandelst und es zu einem "I" machen. Aber sowas kommt dann später.
Zitat von
Waldbärchen:
Die sind dort in einer Matrize zu 5x5 Feldern angeordnet, die aber zeilenweise ausgefüllt werden muß, nachdem man das Schlüsselwort wie oben beschrieben eingesetzt hat. [...] und müßte dann ein eindimensionales in ein zweidimensionales Array umwandeln, damit ich die Buchstaben nach dem Ausfüllen der Matrix mit ihren Koordinaten aufrufen kann.
Um Playfair quasi 1:1 im Programm abzubilden mit der 5x5-Matrix, ja. Unbedingt so tun muss man das aber nicht. Auch ein String kann die Matrix darstellen. Man muss dann halt berechnen, an welcher Stelle im String sich z.B. das vierte Zeichen der dritten Zeile der Playfair-Matrix befindet. Aber auch das käme erst später.