Wo ist der Fehler?

Hallo Leute,

Ich habe, mit sehr,sehr,sehr viel Hilfe von Wolfgang, ein Programm geschrieben was auf simelsten wege eine Text mit hilfe des Caesar Codes Verschlüsseln soll.
Trotz des super genaues hilfe angaben Wolfgangs hab ich im Problem eine Felher den ich irgend wie nicht finde.
Ich vermute das es im Folgendem berreich liegt:
For i:= 1 to length(s) do
k:=ord(s[i]);
k:=k+3;
s[i] :0 chr(k);
t2:=s;
writeln (t2);

i und k sind integer
s und t2 sind sting

Der Fehler ist folgender. Das Program verändert nur den letzten buchstaben.
Bsp.
Eingegeben wird das wort HALLO
es wandelt nur den Buchstaben 0 in den Ascii code um und wieder zurück so das ich als ergebnis nur ein HALLR bekommen.
warum wandelt er nich alle buchstaben um???
Wo liegt der Fehler???
Danke
Gruß Sedat *dermenschmitdenmeistenfragen*

Hi!

For i:= 1 to length(s) do
k:=ord(s[i]);
k:=k+3;
s[i] :0 chr(k);
t2:=s;
writeln (t2);

Der Fehler ist folgender. Das Program verändert nur den
letzten buchstaben.

Ja.

warum wandelt er nich alle buchstaben um??? Wo liegt der Fehler???

Deine FOR-TO-DO-Schleife soll sich über drei Zeilen erstrecken. Das mußt Du dem Compiler aber auch „sagen“, denn er kann ja nicht wissen, ob es nun zwei, drei, 16 oder 139 Zeilen sein sollen. Das ist nicht weiter schwer: Du schließt die betreffenden Zeilen in einen „Block“ ein, wozu Du die Schlüsselwörter „begin“ und „end“ verwendest.

So wird Dein Programm tun, was es soll:

For i:= 1 to length(s) do
 begin
 k:=ord(s[i]);
 k:=k+3;
 s[i] :0 chr(k);
 end;
t2:=s;
writeln (t2);

Wenn Du die begin-end-Blockdefinition wegläßt, erstreckt sich die FOR-Schleife nur auf die unmittelbar folgende Zeile, bei Deinem Programm also „k:=ord(s[i])“.

Wenn Du mit einer IDE arbeitest und Dir ein integrierter Debugger zur Verfügung steht, kannst Du das, was in Deinem Programm passiert, übrigens ganz toll in „Slow-Motion“ verfolgen. Wie man den Debugger startet und benutzt, kann ich Dir hier aber nicht allgemein erklären – da mußt Du Dich schon selbst drum kümmern, wenn es Dich interessiert.

Mit freundlichem Gruß
Martin

Hi,

schande über mich. Hab ich total vergessen.
Vielen Danke das du mir da raus geholfen hast.
Alles klappt jetzt genau so wie es sollte.
Nochmals vielen Dank
Mit freundlichem Gruß
Sedat