Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите,уделите секунду
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Darq
программа шифрования и расшифрования текста,написал.должна быть такая какой сейчас её представлю.но в предпоследнем действии выдет ошибку "предпологается порядковое выражение".подскажите что делать?
program z;
 uses crt;
 var
  k,j,i,e,d,p,q,phi,n,l:integer;
  m,c:string;
  arr:array[0..100] of byte;
  begin
   clrscr;
   write('p=');
   readln(p);
   write('q=');
   readln(q);
   writeln('enter you message');
   readln(m);
   n:=p*q;
   writeln(n);
   phi:=(p-1)*(q-1);
   writeln(phi);
   for i:=2 to phi-1 do
    begin
     if not (phi mod i=0) then e:=i;
         for j:=2 to phi-1 do
           begin
                if e*j mod phi=1 then d:=j;
           end;
    end;
   writeln(e);
   writeln(d);
   for k:=0 to length(m)-1 do
       begin
            l:=ord(copy(m,k,1));
            c:=exp(ln(l)*e) mod n;
       end;
   writeln(c);
   readln;
 end.
Федосеев Павел
l:=ord(copy(m,k,1));
copy возвращает строку, а не символ (char).
Если хочешь получить k-тый символ, то получи его как элемент массива m[k] без извращения.

c:=exp(ln(l)*e) mod n;
- c - объявлена как строка
- может лучше в цикле возводить в степень.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.