Program vytvorí zašifrovanú kópiu vášho súboru

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: Zadania Pascal

Autor: Pheo
web: pascalsource@ic.cz

Program: Sifra.pas
Súbor exe: Sifra.exe
Potrebné: K_pr4.txt

Program vytvorí zašifrovanú kópiu vášho súboru. Každý riadok je v nej zapísaný odzadu. Iba bodka a čiarka, ak sa nachádzajú na konci riadku, zostanú na svojom mieste.
{ SIFRA.PAS                                                          }
{ Vytvorte program, ktory odkoduje resp. 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.