Опубликовано 03.01.2018 по предмету Информатика от Гость

Паскаль шифр цезаря

почему при дешифровке в слове с буквой "в" в результате выдаёт восклицательный знак то есть не может его дешифровать?




program SHIFR_CEZERYA;
uses crt;
var a,b,c:string;
i,j,k,d,g:integer;
begin
clrscr;
writeln(Шифрование?1-да,0-нет);
readln(g);
writeln(Исходный текст );
readln(a);
writeln(ключ);
readln(d);
c:=; //Результат
b:=абвгдеёжзийклмнопрстуфхцчшщъыьэюя;
for i:=1 to length(a) do //цикл
for j:=1 to length(b) do
begin
If g=1 then k:=(j+d) mod 33 else k:=(j-d)mod 33;
If k>33 then k:=k-33;
if k<0 then k:=k+33;
if a[i]=b[j] then c:=c+b[k];
end;
writeln(c);
readkey;
end.

Ответ оставил Гость

Ну во-первых должно быть примерно так
for i:=1 to length(a) do //цикл
for j:=1 to length(b) do
if a[i]=b[j] then
begin
If g=1 then k:=(j+d) mod 33 else k:=(33+j-d)mod 33;
c:=c+b[k];
end;

и во-вторых, второй цикл не нужен, там надо выяснять 
значение j поиском a[i] в b, тогда и условия с a[i]=b[j] не надо

Не нашел нужный ответ?

Если ответ по предмету Информатика отсутствует или он оказался неправильным, то попробуй воспользоваться поиском других ответов во всей базе сайта.


Найти другие ответы
Самые новые вопросы