Mam zasifrovat text posunutim o x znaku-->A=Z B=A.... pomozte jak
Printable View
Mam zasifrovat text posunutim o x znaku-->A=Z B=A.... pomozte jak
tomuhle se rika Caesarova sifra. hodim ti to tu v packalu bo delfy po ruce nemam ;) kazdopadne myslenka je stejna
rotX ovlada posun (o kolik).Kód:program CSifra;
var
a:string[255];
i,rotX:integer;
begin
a:='Peta';
writeln(a);
rotX:=3;
for i:=1 to Length(a) do
begin
case a[i] of
'A': a[i]:=chr(ord('Z')-(rotX mod 26)+1);
'B'..'Z': a[i]:=chr( ( (ord(a[i])-rotX-ord('A')) mod 26) + ord('A') );
'a': a[i]:=chr(ord('z')-(rotX mod 26)+1);
'b'..'z': a[i]:=chr( ( (ord(a[i])-rotX-ord('a')) mod 26) + ord('a') );
{ else : .... tady si dodelaj co chces delat se znaky mimo abecedu}
end;
end;
writeln(a);
end.
zhruba by to melo ficet ;)
A) Prejmenuj si thread podle pravidel
B) To je tak jednoduchy, ze se vubec ptas.
Nevim syntax, ale algoritmus ti napsat muzu.
Mas promenou text="blabol", pocitam, ze k tomu jde pristupovat jako k poli znaku ukoncenymu null takze text[0]=b atd. Mno, takze to pekne vemes, hodis do smycky nako takhle:
Je to jen tak zbastleny v "zadnym" jazyce, ale tohle snad v delfi napsat zvladnes ne ?Kód:x=0
while text[x++] not null do
if text [x-1] = [b..z] then
text[x-1]= ddd(chr(text[x-1])-1) //ddd fce cislo > char, si nepamaruju, jak se menuje :)
fi
if text[x-1] = "a" then text [x-1] ="z"
if text[x-1] <> [a..z] then echo "si nedelej prdel"
done
Edit: Koukam, sem pomalej a vypada to, ze tu mas i rovnou Copy&Paste priklad :wink:
Edit2: 2Jedik - no fuj, delat to pres CASE.
zadny C&P. sem to poctive ted zbastlil. gpc rulezz ;)Citace:
Původně odeslal Jezevec
// mod1
jak fuj? imho lepci 1 case nez 10 ifu ;) minimalne prehlednejsi.
Diky moc :D