Benutzer: gast • Besitzer: didaktik • Zuletzt geändert am: 2010/11/04 00:42:28

Ver- und Entschlüsselung nach Caesar

program Caesar_Code;
uses wincrt;

type talphabet = array[1..26,1..2] of char;

var alpha       : talphabet;
    anzahl, i, j  : byte;
    ktext         : string;

procedure Feld_belegen(v:byte);
  var spalte, zeile : byte;
  begin
    for spalte:=1 to 26 do
      alpha[spalte,1]:=chr(spalte+64);
    for spalte:=1 to 26-v do
      alpha[spalte,2]:=chr(spalte+64+v);
    i:=0;
    for spalte:=26-v+1 to 26 do
      begin
        inc(i);
        alpha[spalte,2]:=chr(i+64)
      end;
  end;

procedure Feld_ausgeben;
  begin
    for i:=1 to 2 do
      begin
        for j:=1 to 26 do
          write(alpha[j,i],' ');
          writeln;
      end;
  end;

procedure Verschluesseln(v:byte; var text:string);
  var stelle  : byte;
      buch    : char;
      hilfs   : string;

  begin
    writeln('Verschlüsselung');
    hilfs:='';
    for i:=1 to length(text) do
      begin
        buch:=upcase(text[i]);
        for j:=1 to 26 do
          if alpha[j,1]=buch then
            stelle:=j;
        writeln(buch,'  ->  ',alpha[stelle,2]);
        readkey;
        hilfs:=hilfs+alpha[stelle,2];
      end;
    text:=hilfs;
  end;

procedure Entschluesseln(v:byte; var text:string);
  var stelle   : byte;
      buch     : char;
      hilfs    : string;

  begin
    writeln('Entschlüsselung');
    hilfs:='';
    for i:=1 to length(text) do
      begin
        buch:=upcase(text[i]);
        for j:=1 to 26 do
          if alpha[j,2]=buch then
            stelle:=j;
        writeln(buch,'  ->  ',alpha[stelle,1]);
        readkey;
        hilfs:=hilfs+alpha[stelle,1];
      end;
    text:=hilfs;
  end;
 

begin
  writeln('Cäsar - Code');
  write('Um wieviele Stellen soll das Alphabet verschoben werden? ');
  readln(anzahl);
  Feld_belegen(anzahl);
  writeln;
  Feld_ausgeben;
  readkey;
  writeln;
  writeln('Welcher Text soll verschlüsselt werden? ');
  readln(ktext);
  writeln;
  Verschluesseln(anzahl,ktext);
  writeln;
  writeln('Geheimtext: ',ktext);
  writeln;
  Entschluesseln(anzahl,ktext);
  writeln;
  writeln('Klartext:   ',ktext);
end.


zu UE-Block II
 zurück zu Beispiele