Hallo allerseits!
Hoffentlich bin ich hier im richtigen Forum für meine Frage gelandet.
Und zwar:
Ich soll grade mit QBasic ein Programm entwerfen, mit dessen Hilfe es möglich ist, Wörter oder Phrasen zu verschlüsseln. So soll z.B. aus „Julius Caesar“ „Kpmjpt Dbftbs“ (Verschiebung um 1 im Alphabet) werden. (Die Stärke der Verschiebung kann man im Programm bestimmen) Das ganze läuft natürlich über die ASCII-Zeichentabelle.
Mein Problem ist jetzt, dass die VERschlüsselung allgemein ganz gut klappt, nur dass eine ENTschlüsselung, also quasi das Rückgängigmachen der Verschlüsselung, nicht wirklich funktionieren will. Es funktioniert ohnehin bis jetzt nur mit Großbuchstaben.
Mein Programm sieht folgendermaßen aus:
CLS
LOCATE 10
PRINT " Möchten Sie ihren Code:"
PRINT " "
PRINT " (1) Verschlüsseln"
PRINT " (2) Entschlüsseln"
PRINT " "
INPUT " ", z$
IF z$ = „1“ THEN GOTO 10
IF z$ = „2“ THEN GOTO 20
GOTO 0
10 PRINT " "
PRINT " "
INPUT " Wie viele Buchstaben verschieben?"; p
CLS
LOCATE 10
PRINT " Welches Wort möchten Sie verschlüsseln? (Nur Kleinbuchstaben!): "
PRINT " "
PRINT " "
INPUT " ", r$
n = 65
IF p = 3 THEN LET x = 0
IF p = 4 THEN LET x = 1
IF p = 5 THEN LET x = 2
FOR x% = LEN(r$) TO 1 STEP -1
IF MID$(r$, x%, 1) = „a“ THEN MID$(r$, x%, 1) = CHR$(n + p + x)
IF MID$(r$, x%, 1) = „b“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 1)
IF MID$(r$, x%, 1) = „c“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 2)
IF MID$(r$, x%, 1) = „d“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 3)
IF MID$(r$, x%, 1) = „e“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 4)
IF MID$(r$, x%, 1) = „f“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 5)
IF MID$(r$, x%, 1) = „g“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 6)
IF MID$(r$, x%, 1) = „h“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 7)
IF MID$(r$, x%, 1) = „i“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 8)
IF MID$(r$, x%, 1) = „j“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 9)
IF MID$(r$, x%, 1) = „k“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 10)
IF MID$(r$, x%, 1) = „l“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 11)
IF MID$(r$, x%, 1) = „m“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 12)
IF MID$(r$, x%, 1) = „n“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 13)
IF MID$(r$, x%, 1) = „o“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 14)
IF MID$(r$, x%, 1) = „p“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 15)
IF MID$(r$, x%, 1) = „q“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 16)
IF MID$(r$, x%, 1) = „r“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 17)
IF MID$(r$, x%, 1) = „s“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 18)
IF MID$(r$, x%, 1) = „t“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 19)
IF MID$(r$, x%, 1) = „u“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 20)
IF MID$(r$, x%, 1) = „v“ THEN MID$(r$, x%, 1) = CHR$(n + p + x + 21)
IF MID$(r$, x%, 1) = „w“ THEN MID$(r$, x%, 1) = CHR$(n + p + 2 + 22)
IF MID$(r$, x%, 1) = „x“ THEN MID$(r$, x%, 1) = CHR$(n + p + x - 3)
IF MID$(r$, x%, 1) = „y“ THEN MID$(r$, x%, 1) = CHR$(n + p + x - 2)
IF MID$(r$, x%, 1) = „z“ THEN MID$(r$, x%, 1) = CHR$(n + p + x - 1)
NEXT x%
PRINT " "
PRINT " "
PRINT " "; r$
SLEEP 10
GOTO 100
20 PRINT " "
PRINT " "
INPUT " Um wie viele Stellen verschieben?"; p
CLS
LOCATE 10
PRINT " Welches Wort möchten Sie entschlüsseln? (Nur Großbuchstaben!): "
PRINT " "
PRINT " "
INPUT " ", r$
n = 97
IF n > 121 THEN p = p - 26
FOR x% = LEN(r$) TO 1 STEP -1
IF MID$(r$, x%, 1) = „A“ THEN MID$(r$, x%, 1) = CHR$(n - p + 26)
IF MID$(r$, x%, 1) = „B“ THEN MID$(r$, x%, 1) = CHR$(n - p + 1)
IF MID$(r$, x%, 1) = „C“ THEN MID$(r$, x%, 1) = CHR$(n - p + 2)
IF MID$(r$, x%, 1) = „D“ THEN MID$(r$, x%, 1) = CHR$(n - p + 3)
IF MID$(r$, x%, 1) = „E“ THEN MID$(r$, x%, 1) = CHR$(n - p + 4)
IF MID$(r$, x%, 1) = „F“ THEN MID$(r$, x%, 1) = CHR$(n - p + 5)
IF MID$(r$, x%, 1) = „G“ THEN MID$(r$, x%, 1) = CHR$(n - p + 6)
IF MID$(r$, x%, 1) = „H“ THEN MID$(r$, x%, 1) = CHR$(n - p + 7)
IF MID$(r$, x%, 1) = „I“ THEN MID$(r$, x%, 1) = CHR$(n - p + 8)
IF MID$(r$, x%, 1) = „J“ THEN MID$(r$, x%, 1) = CHR$(n - p + 9)
IF MID$(r$, x%, 1) = „K“ THEN MID$(r$, x%, 1) = CHR$(n - p + 10)
IF MID$(r$, x%, 1) = „L“ THEN MID$(r$, x%, 1) = CHR$(n - p + 11)
IF MID$(r$, x%, 1) = „M“ THEN MID$(r$, x%, 1) = CHR$(n - p + 12)
IF MID$(r$, x%, 1) = „N“ THEN MID$(r$, x%, 1) = CHR$(n - p + 13)
IF MID$(r$, x%, 1) = „O“ THEN MID$(r$, x%, 1) = CHR$(n - p + 14)
IF MID$(r$, x%, 1) = „P“ THEN MID$(r$, x%, 1) = CHR$(n - p + 15)
IF MID$(r$, x%, 1) = „Q“ THEN MID$(r$, x%, 1) = CHR$(n - p + 16)
IF MID$(r$, x%, 1) = „R“ THEN MID$(r$, x%, 1) = CHR$(n - p + 17)
IF MID$(r$, x%, 1) = „S“ THEN MID$(r$, x%, 1) = CHR$(n - p + 18)
IF MID$(r$, x%, 1) = „T“ THEN MID$(r$, x%, 1) = CHR$(n - p + 19)
IF MID$(r$, x%, 1) = „U“ THEN MID$(r$, x%, 1) = CHR$(n - p + 20)
IF MID$(r$, x%, 1) = „V“ THEN MID$(r$, x%, 1) = CHR$(n - p + 21)
IF MID$(r$, x%, 1) = „W“ THEN MID$(r$, x%, 1) = CHR$(n - p + 22)
IF MID$(r$, x%, 1) = „X“ THEN MID$(r$, x%, 1) = CHR$(n - p + 23)
IF MID$(r$, x%, 1) = „Y“ THEN MID$(r$, x%, 1) = CHR$(n - p + 24)
IF MID$(r$, x%, 1) = „Z“ THEN MID$(r$, x%, 1) = CHR$(n - p + 25)
NEXT x%
PRINT " "
PRINT " "
PRINT " "; r$
SLEEP 10
GOTO 100
100 CLS
LOCATE (10)
PRINT " Neustart?"
PRINT " "
PRINT " (1) Ja"
PRINT " (2) Nein"
PRINT " "
INPUT " ", l$
IF l$ = „1“ THEN GOTO 0
IF l$ = „2“ THEN END
GOTO 100
Das mit den ganzen IF so-und-so Befehlen ist mir bis jetzt nicht besser gelungen, da ich nicht weiss, wie ich das ganze auch noch in eine Schleife packen soll, wenn es schon auf DIESE Weise nicht funktioniert. -.-
Wenn jemand die Mühe aufbringt, den Fehler zu finden, wäre ich wirklich sehr dankbar. Ich weiss nämlich wirklich nicht mehr weiter mit dem Programm… ^^
Danke im Vorraus. Gruß, Michl!