@vikatkachyk

Ошибка в тексте программы шифрования Виженера на Паскале?

При компиляции на 130 строке выдает вот эту ошибку:
Vizhiner2.pas(130) : Тип параметра или возвращаемого значения не может быть описанием записи или описанием массива с границами.
spoiler
program vizhiner2;
uses crt, graphABC;
const

 alphabet='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'+'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  alphabet2='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  sym = ' .АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'+'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';


var
  s0,s1,s2: string;
  tablchar:array [1..34]  of char;
  keyword,key_out:string;
  t:text;
  i,j,k,o,rec:integer;
  str,stol:char;
 arr_key, arr_mass,arr_demass,r,m:  array[0..200] of integer;
procedure Encrypt(str_massage: string; str_key: string; var es:string; var arr_of_n_key, arr_of_n_mass:array  of integer ;i:integer; var str_key_out: string);
var
  es2:string;
  l_massage,l_alph,l_keyword,n_mass,k: integer;
  n_key,y: integer;
  sym_massage,sym_key:char;
begin
  l_massage:=length(str_massage);
  write('l_massage=',l_massage);
    readln;
  l_alph:=length(sym);
  write('l_alph=',l_alph);
    readln;
    l_keyword:=length(keyword);
  write('l_keyword=',l_keyword);
    readln;
  es:=str_massage;
  es2:=str_key;
  writeln('es=',str_massage);
  writeln('es2=',str_key);
  write('начало шифрования');
    readln;

  for i:=1 to l_massage do begin
    y:=y+1;
    writeln('y=',y);
    writeln('итеррация ',i);
  writeln('es=',str_massage);
  writeln('es2=',str_key);
    sym_massage:=str_massage[i];
    writeln('sym_mass=',sym_massage);
    n_mass:=pos(sym_massage,sym);
    writeln('no_mass=',n_mass);
    for k:=y to l_keyword do
    begin
    writeln('внутренняя итеррация ',k);
    sym_key:=str_key[k];
    writeln('sym_key=',sym_key);
    n_key:=pos(sym_key,sym);
    writeln('no_key=',n_key);
    break;
    end;

  if n_mass=1 then
  n_mass:=1 else
  if n_mass=2 then
  n_mass:=2
  else
  if (n_mass>2) and (n_mass<36) then
  begin
  str_key_out[i]:=sym[n_key];
    writeln('str_key_out!!!!!!!!!!!!=',str_key_out[i]);
  n_key:=n_key-35;
  arr_of_n_key[i]:=n_key;///////////////накапливание массива с номерами букв ключевого слова

  writeln('n_key=',n_key);
  writeln('sym_key=', sym[n_key+2]);
  n_mass:=n_mass+n_key mod l_alph;
  arr_of_n_mass[i]:=n_mass;
  writeln ('n_mass=',n_mass);
  if n_mass>35 then
  n_mass:=n_mass-35+2;
  arr_of_n_mass[i]:=n_mass;
  writeln('n_mass=',n_mass)
  end
  else
  writeln('n_mass=',n_mass);
  if (n_mass>35) and (n_mass<l_alph+1) then
  begin
  str_key_out[i]:=sym[n_key];
    writeln('str_key_out!!!!!!!!!!!!=',str_key_out[i]);
    n_key:=n_key-35;
    arr_of_n_key[i]:=n_key;

    writeln('n_key=', n_key);
    writeln('sym_key=', sym[n_key]);
    n_mass:=n_mass+n_key mod l_alph;
    writeln('n_mass=',n_mass);
    arr_of_n_mass[i]:=n_mass;
    writeln('sym_mass=', sym[n_mass]);

    if n_mass>l_alph then
    begin
    n_mass:=n_mass-33;
    arr_of_n_mass[i]:=n_mass;
    end;
    end;
    writeln('no_mass=',n_mass);
    if y>=l_keyword then y:=0;
    es[i]:=sym[n_mass];

    writeln('es=',es[i]);
    writeln('arr_key=',arr_of_n_key[i]);
    writeln('arr_mass=',arr_of_n_mass[i]);
    writeln('KEY_OUT!!!!!!!!!!!!!=',str_key_out[i]);
    //writeln('STR_KEY=',str_key[i]);
    
    readln;

  end;
  for i:=1 to  l_massage do begin
    write(str_key_out[i]);
    end;
    writeln(' ');
  
   for i:=1 to  l_massage do begin
  if (arr_of_n_mass[i]>35) and (arr_of_n_mass[i]<l_alph+1) then
    arr_of_n_mass[i]:= arr_of_n_mass[i]-33   ;
         end;
         end;
         
         
procedure Decrypt(str_massage: string; str_key: string; var ds:string;var arr_of_n_key, arr_of_n_demass:array[0..200] of integer ;i:integer);
var
 ds2:string;
   l_massage,l_alph,l_keyword,n_mass,k: integer;
   n_key,y: integer;
  sym_massage,sym_key:char;
begin
  l_massage:=length(str_massage);
  write('l_massage=',l_massage);
    readln;
  l_alph:=length(sym);
  write('l_alph=',l_alph);
    readln;
    l_keyword:=length(keyword);
  write('l_keyword=',l_keyword);
    readln;
  ds:=str_massage;
  ds2:=str_key;
  writeln('es=',str_massage);
  writeln('es2=',str_key);
  write('начало дешифрования');
    readln;
    y:=0;
  for i:=1 to l_massage do begin
    y:=y+1;
    writeln('y=',y);
    writeln('итеррация ',i);
  writeln('es=',str_massage);
  writeln('es2=',str_key);
    sym_massage:=str_massage[i];
    writeln('sym_mass=',sym_massage);
    n_mass:=pos(sym_massage,sym);
    writeln('no_mass=',n_mass);


    for k:=y to l_keyword do
    begin
    writeln('внутренняя итеррация ',k);
    sym_key:=str_key[k];
    writeln('sym_key=',sym_key);
    n_key:=pos(sym_key,sym);
    writeln('no_key=',n_key);
    break;
    end;
  if n_mass=1 then
  n_mass:=1 else
  if n_mass=2 then
  n_mass:=2
  else
  if (n_mass>2) and (n_mass<36) then
  begin
  n_key:=n_key-35;
  arr_of_n_key[i]:=n_key;
  writeln('n_key=',n_key);
  writeln('sym_key=', sym[n_key+2]);
  n_mass:=n_mass-n_key mod l_alph;
  arr_of_n_demass[i]:=n_mass;
  writeln ('n_mass=',n_mass);
  if n_mass<3 then
  n_mass:=n_mass+35-2;
  arr_of_n_demass[i]:=n_mass;

  writeln('n_mass=',n_mass)
  end
  else
  writeln('n_mass=',n_mass);
  if (n_mass>35) and (n_mass<l_alph+1) then
  begin
    n_key:=n_key-35;
    arr_of_n_key[i]:=n_key;
    writeln('n_key=', n_key);
    writeln('sym_key=', sym[n_key+2]);
    n_mass:=n_mass-n_key mod l_alph;
    writeln('n_mass=',n_mass);
    arr_of_n_demass[i]:=n_mass;
    writeln('sym_mass=', sym[n_mass]);

    if n_mass<36 then
    begin
    n_mass:=n_mass+33;
    arr_of_n_demass[i]:=n_mass;
    end;
    end;
    writeln('no_mass=',n_mass);
    if y>=l_keyword then y:=0;
    ds[i]:=sym[n_mass];

    writeln('es=',ds[i]);
    readln;
  end;
  for i:=1 to  l_massage do begin
  if (arr_of_n_demass[i]>35) and (arr_of_n_demass[i]<l_alph+1) then
    arr_of_n_demass[i]:= arr_of_n_demass[i]-33;
         end;
         end;
begin
setwindowsize(1300,700);
  write('Введите сообщение: '); readln(s0);
  write('введите ключевое слово: '); readln(keyword);
  write('Шифрация ');

  readln;
     i:=0;
  Encrypt(s0,keyword,s1,arr_key,arr_mass,k,key_out);
  writeln(s1);
  for i:=1 to length(s0) do
  begin
  write(key_out[i]);
  end;
  

  readln;
  write('Дешифрация ');
  Decrypt(s1,keyword,s2,arr_key,arr_demass,k);
  writeln('Лешифрованное слово:',s0);
  readln;

  clrscr;
  for i:=1 to length(s0) do

  begin
  TextOut(20,20,inttostr(round(length(s0)/length(keyword))));
  rec:=50*i;
  SetFontColor(clblack);
  SetFontSize(20);
  rectangle(50+rec,50,100+rec,100);
  TextOut(65+rec,57,s0[i]);
  rectangle(50+rec,100,100+rec,150);
  TextOut(65+rec,107,inttostr (arr_demass[i]-2));
  rectangle(50+rec,150,100+rec,200);
  TextOut(65+rec,157,key_out[i]);
  rectangle(50+rec,200,100+rec,250);
  TextOut(65+rec,207,inttostr (arr_key[i]));
  rectangle(50+rec,250,100+rec,300);
  TextOut(65+rec,257,s1[i]);
  rectangle(50+rec,300,100+rec,350);
  TextOut(65+rec,307,inttostr (arr_mass[i]-2));
  rectangle(50+rec,350,100+rec,400);
  TextOut(65+rec,357,key_out[i]);
  rectangle(50+rec,400,100+rec,450);
  TextOut(65+rec,407,inttostr (arr_key[i]));
  rectangle(50+rec,450,100+rec,500);
  TextOut(65+rec,457,s2[i]);
  rectangle(50+rec,500,100+rec,550);
  TextOut(65+rec,507,inttostr (arr_demass[i]-2));
  end;
  readln;
  clrscr;
  readln;
  SetFontSize(10);
  assign(t,'output.txt');
  reset(t);
  rewrite(t);

      for i:=0 to round(length(alphabet2)) do begin//1
      for j:=1 to round(length(alphabet2)) do begin
      rec:=j+k;
      tablchar[j]:=alphabet[rec];
     // tabldigit[j]:=rec;
      write(tablchar[j],'');
      //write(tabldigit[j],'');
       write(t,tablchar[j],'');
      end;

      write(t,'');
      k:=k+1;
      writeln;
       end;//1
      for i:=0 to round(length(alphabet2)) do begin//1
      for j:=1 to round(length(alphabet2)) do begin
      rec:=j+k;
      tablchar[j]:=alphabet[rec];
     // tabldigit[j]:=rec;
    //  write(t,tablchar[j],'');
      //write(tabldigit[j],'');
      end;
     // write(t, tablchar[j],'');
      k:=k+1;

       end;
       close(t);

   end.
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 руб.
VOLKA Лимассол
от 200 000 до 300 000 руб.
от 50 000 до 100 000 руб.
26 июн. 2019, в 20:56
10000 руб./за проект
26 июн. 2019, в 20:44
3000 руб./за проект
26 июн. 2019, в 19:34
300 руб./за проект