Wie muss ich dieses Pascal-Programm umschreiben?

1 Antwort

Reicht es, das Minus bei if durch ein Plus zu ersetzen?

Ich sage jetzt einfach mal: Probiere es doch aus. 😉

Aber wenn du nicht den ersehnten Glückstreffer landest, wirst du nicht drumherum kommen, den Verschlüsselungsalgorithmus näher studieren zu müssen. Am besten nimmt man sich dafür ein kurzes Wort und spielt mit diesem die einzelnen Schritte selbst einmal nach.

Beispiel für hello mit einer Verschiebung von 1 (nur die ersten beiden Iterationen):

// iteration 1
b :=  otext[i]; // h
b :=  upcase(b); // H
p := ord(b); // 72
p := p + v; // 73

if p > 90 then p := p - 26; // not true

c := chr(p); // I
ctext := ctext + c; // I

// iteration 2
b :=  otext[i]; // e
b :=  upcase(b); // E
p := ord(b); // 69
p := p + v; // 70

if p > 90 then p := p - 26; // not true

c := chr(p); // F
ctext := ctext + c; // IF

Das heißt, pro Schritt wird der aktuelle Buchstabe zu einen Großbuchstaben umgeformt (upcase) in seine numerische Repräsentation in der ASCII-Tabelle umgewandelt (ord), die Verschiebung aufaddiert und dann erfolgt eine Konversion zurück zum Zeichen (chr).

Einen Teil kannst du rückgängig machen. Du kannst die Verschiebung wieder subtrahieren. Aber da der Dechiffrier-Algorithmus nicht wissen kann, ob der Buchstabe zuvor ein Groß- oder Kleinbuchstabe war, kann die Entschlüsselung nur zu einem Wort komplett in Groß- oder Kleinbuchstaben erfolgen (wofür du dich entscheidest, kannst du selbst auswürfeln).

Zu guter Letzt steht aber auch noch die Bedeutung des if aus. Dies ist für Sonderzeichen, wie z.B. eine eckige Klammer. Spiele auch diesen Fall einmal durch. Dann weißt du, wie du es umdrehen kannst.