Исправьте данную программу Почему то пропускается часть кода
program Viginer;
const
nabor_en: string = '';
nabor_ru: string = '';
kol_en: integer = 26;
kol_ru: integer = 33;
var
arrey_table: array[1..33, 1..33] of string;
text, key, text_key, text_cipher, text_decipher, arrey_str, nabor: string;
i, j, cifra, vihod, otvet, otvet2, x, y, length_text, num, kol: integer;
label
index, cipher_index, decipher, index_2, vihod_end, cipher;
begin
{—
| Главное меню программы |
}
index: { Главное меню программы }
writeln('Вас привествуюет программа для шифрования и дешифрования по методу Виженера');
writeln('Выьерите язык с которым будите работать:');
writeln('1 - Русский');
writeln('2 - Англизкий');
read(otvet);
if (otvet = 1) then begin kol := kol_ru; nabor := nabor_ru end else
if (otvet = 2) then begin kol := kol_en; nabor := nabor_en end else
goto index;
writeln('Если вы желаете зашифровать то введите 1 если дешифровать то введите 2. Если вы желаете покинуть программу введите 3.');
index_2: { Повтор ввода выбора действий при ошибки }
read(otvet2);
if (otvet2 = 1) then goto cipher else
if (otvet2 = 2) then goto decipher else
if (otvet2 = 3) then goto vihod_end else begin
writeln('Неверная команда');
goto index_2;
end;
{—
| Шифрование |
}
cipher: { Шифрование методом печати нужных данных }
writeln('Введите текст который нужно зашифровать:');
read(text);
writeln('Введите ключ:');
read(key);
{ Создание таблицы Виженера }
for i := 1 to kol do
begin
for j := 1 to kol do
begin
if (i > 1) then cifra := j + i - 1 else cifra := j;
arrey_table[i, j] := nabor[cifra];
end;
end;
{ Заполнение строки ключ }
length_text := Length(text);
j := 0;
for i := 1 to length_text do
begin
if (j = Length(key)) then j := 1 else j := j + 1;
text_key := text_key + key[j];
end;
{ Производим шифрование }
text_cipher := '';
for i := 1 to length_text do
begin
if (text[i] = ' ') then text_cipher := text_cipher + '&'
else begin
for j := 1 to kol do
if (nabor[j] = text[i]) then x := j;
for j := 1 to kol do
if (nabor[j] = text_key[i]) then y := j;
text_cipher := text_cipher + arrey_table[x, y];
end;
end;
{ Вывод результата }
writeln();
writeln('РЕЗУЛЬТАТ');
writeln('Ключ: ', key);
writeln('Начальный текст:');
writeln(text);
writeln('Зашифрованный текст:');
writeln(text_cipher);
writeln('Команды: повторить - 1, вернуться в главное меню - 2, выйти из программы - 3');
read(otvet);
if (otvet = 1) then goto cipher else
if (otvet = 2) then goto index else
if (otvet = 3) then goto vihod_end else begin
writeln('Неверная команда');
goto index;
end;
{—
| Дешифрование |
}
decipher: { Дешифроватор }
writeln('Введите текст для дешифрации:');
read(text);
writeln('Введите ключ:');
read(key);
{ Заполнение строки ключ }
length_text := Length(text);
j := 0;
for i := 1 to length_text do
begin
if (j = Length(key)) then j := 1 else j := j + 1;
text_key := text_key + key[j];
end;
{ Производим дешифрование }
text_decipher := '';
for i := 1 to length_text do
begin
if (text[i] = '&') then text_decipher := text_decipher + ' '
else begin
{ Вычисляем номер буквы в алфовите }
for j := 1 to kol do
if (nabor[j] = text_key[i]) then y := j;
{ Создаем нужную строку из таблицы Виженера }
arrey_str := '';
num := y;
for j := 1 to kol do
begin
cifra := j + num - 1;
arrey_str := arrey_str + nabor[cifra];
end;
{ Вычисляем номер нашего символа в созданной строке }
for j := 1 to kol do
if (arrey_str[j] = text[i]) then x := j;
{ По вычесленному номеру выбираем букву из оригинального алфовита }
text_decipher := text_decipher + nabor[x];
end;
end;
{ Вывод результата }
writeln();
writeln('РЕЗУЛЬТАТ');
writeln('Ключ: ', key);
writeln('Начальный текст:');
writeln(text);
writeln('Расшифрованный текст:');
writeln(text_decipher);
writeln('Команды: повторить - 1, вернуться в главное меню - 2, выйти из программы - 3');
read(otvet);
if (otvet = 1) then goto decipher else
if (otvet = 2) then goto index else
if (otvet = 3) then goto vihod_end else begin
writeln('Неверная команда');
goto index;
end;
vihod_end: { Выход из программы }
за использование нашей программы нажмите ESC ');
end.