Исправьте данную программу Почему то пропускается часть кода
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.
1)Монитор,(на счет магнитофона не уверен, сам по себе именно магнитофон никак не является устройством ПК, но если подразумевают пол этим словом динамик ПК, то подходит)
2)Получение
3)Электрический ток
4)Анатомический муляж
5)102 бита
6)48
7)из перечисленных ниже нет верного ответа. 568 в десятичной = 1 000 111 000 в двоичной.
8)АВИБА
9)Представленные ответы неправильны, так как не являются двоичным кодом(присутствуют двойки)+не указано к какой системе счисления принадлежит y (если x - очевидно 16-ти ричная, то y может быть как 16 так и 10
10) И снова нет верного ответа из предложенных, т.к. получится D8
11)800 бит
12) (Ячейки excel где?)
13) Аналогично 12
14)тоже
15)27
16)User-name
17)c*.c*
18)145.92.128.0
19)Верного ответа нет. Правильно: 22
20) 5
Объяснение: