Witam, mam program, którym zastosowuje szyfr, gdzie znak zostaje przesunięty o 3 dalej w alfabecie.
program cezar;
{$APPTYPE CONSOLE}
uses
SysUtils;
const k = 2;// liczba przesuniecia
var
tekst:string;
i,j,a:integer;
begin
writeln('Podaj tekst: ');
readln(tekst);
j:=length(tekst);
writeln('Ncisnij 1:zaszyfrowac albo 2:odszyfrowac? ');
readln(a);
case a of
1:begin
for i:=1 to j do
begin
if (ord(tekst[i])+k<=122) then tekst[i]:=chr(ord(tekst[i])+k)
else
tekst[i]:=chr(ord(tekst[i])+k-122+96);
end;
writeln(tekst);
end;
2:begin
for i:=1 to j do
begin
if (ord(tekst[i])-k>=97) then tekst[i]:=chr(ord(tekst[i])-k)
else
tekst[i]:=chr(ord(tekst[i])-k+26);
end;
writeln(tekst);
end;
end;
readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
Chciałbym bardzo prosić o dokładniejsze wytłumaczenie tej linijki:
begin
for i:=1 to j do
begin
if (ord(tekst[i])+k<=122) then tekst[i]:=chr(ord(tekst[i])+k)
else
tekst[i]:=chr(ord(tekst[i])+k-122+96);
end;
writeln(tekst);
end;
Rozumiem koncepcję programu, ale nie do końca rozumiem tą część, jest przesunięcie, ale czemu tam ma być naprzykład mniejsze bądź równe 122? Byłbym wdzięczny za odpowiedź
dodanie znaczników <code class="delphi"> - furious programming