Program odkóduje/zakóduje text zašifrovaný posunutím (každé písmeno sa nahradí písmenom, ktoré je v (cyklickej) anglickej abecede o n znakov ďalej, ostatné znaky ostanú bez zmeny
Delphi & Pascal (česká wiki)
Kategória: Matematika
Program: Sifra.pas
Súbor exe: Sifra.exe
Program: Sifra.pas
Súbor exe: Sifra.exe
Program odkóduje/zakóduje text zašifrovaný posunutím (každé písmeno sa nahradí písmenom, ktoré je v (cyklickej) anglickej abecede o n znakov ďalej, ostatné znaky ostanú bez zmeny.
{ SIFRA.PAS } { Program odkoduje/zakoduje text zasifrovany posunutim } { (kazde pismeno sa nahradi pismenom, ktore je v (cyklickej) } { anglickej abecede o n znakov dalej, ostatne znaky ostanu bez zmeny.} { } { Datum:16.11.2006 http://www.trsek.com } program sifra; const tmp_subor = 'subor.tmp'; var sm : string; n : integer; subor: string; { zakoduje/odkoduje subor } procedure Zakoduj( subor:string; n:integer ); var f: file of char; f2: file of char; ch: char; p: integer; begin Assign (f,subor); Assign (f2,tmp_subor); Reset (f); Rewrite(f2); while( not(eof(f))) do begin { precitame } Read(f,ch); { budem kodovat male pismena ? } if( ch in ['a'..'z'])then begin p:=ord(ch)+n; { nad rozsah } while(p>ord('z'))do p:=p-ord('z')+ord('a')-1; { pod rozsah } while(p<ord('a'))do p:=ord('z')-(ord('a')-p)+1; ch:=chr(p); end; { budem kodovat velke pismena ? } if( ch in ['A'..'Z'])then begin p:=ord(ch)+n; { nad rozsah } while(p>ord('Z'))do p:=p-ord('Z')+ord('A')-1; { pod rozsah } while(p<ord('A'))do p:=ord('Z')-(ord('A')-p)+1; ch:=chr(p); end; { zapiseme } write(f2,ch); end; { zatvorime } close(f); close(f2); end; { premenuje docastny subor na povodny } procedure Premenuj( subor:string ); var f: file of char; begin { zmazeme povodny } Assign(f,subor); Erase(f); { premenuje temp } Assign(f,tmp_subor); Rename(f,subor); end; { hlavny } BEGIN write('Zada meno suboru : '); readln(subor); write('Ake je posunutie : '); readln(n); write('Mam zakodovat, odkodovat (stlac z,o) : '); readln(sm); { vykona zakodovanie/odkodovanie } if( sm='z' )then begin Zakoduj(subor,n); Premenuj(subor); writeln('Subor zakodovany.'); end else begin Zakoduj(subor,(-1)*n); Premenuj(subor); writeln('Subor zakodovany.'); end; Readln; END.