Компилятор в паскале пишет: строка 18 Нет перегруженной подпрограммы с такими типами параметров program Shifr; var s1,s2:string; i,n,k,p:integer; key:integer; //ключ шифрования f1,f2:text; BEGIN assign(f1,'Dannie.txt'); as...

Компилятор в паскале пишет: строка 18 Нет перегруженной подпрограммы с такими типами параметров program Shifr;  var s1,s2:string; i,n,k,p:integer; key:integer; //ключ шифрования f1,f2:text; BEGIN assign(f1,'Dannie.txt'); assign(f2,'Shifr.txt'); reset(f1);  rewrite(f2); writeln('Введите ключ шифрования от 1 до 33:'); readln(key);  while Not(Eof(f1)) do begin readln(f1,s1); s2:=''; for i:=1 to length(s1) do s2:=s2+chr(ord(s1[i]+key)); writeln(f2,s2); end; close(f1);  close(f2);  END.
Гость
Ответ(ы) на вопрос:
Гость
В строке s2:=s2+chr(ord(s1[i]+key)); скобка не на месте. Надо так: s2:=s2+chr(ord(s1[i])+key);
Гость
А что Вас удивляет? Ошибка в операторе s2:=s2+chr(ord(s1[i]+key)); s1 - строка, поэтому s1[i] - её i-й символ, который имеет тип char. key - переменная типа integer. Вы складываете char и integer. Что ожидаете получить? В большинстве реализаций паскаля такая операция запрещена. В PascalABC.NET она допустима и результатом будет строка типа string. Но и в этом случае функция Ord() будет вызвана неверно, поскольку её аргумент должен быть типа char, но не string.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы