diana55665
20.12.2021 01:02

Исправьте данную программу Почему то пропускается часть кода
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.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
АняГ11
10.12.2022 03:13

Обработки текстовой информации

Текстовая информация может возникать из различных источников и иметь различную степень сложности по форме представления. В зависимости от формы представления для обработки текстовых сообщений используют разнообразные информационные технологии. Чаще всего в качестве инструментального средства обработки текстовой электронной информации применяют текстовые редакторы или процессоры. Они представляют программный продукт, обеспечивающий пользователя специальными средствами, предназначенными для создания, обработки и хранения текстовой информации. Текстовые редакторы и процессоры используются для составления, редактирования и обработки различных видов информации. Отличие текстовых редакторов от процессоров заключается в том, что редакторы, как правило, предназначены для работы только с текстами, а процессоры позволяют использовать и другие виды информации.

0,0(0 оценок)
Ответ:
linakkj
17.07.2020 18:22

Відповідь:

#include<stdio.h>

#include<stdlib.h>

int quantity(){

int y;

while(1){

printf("Введите количество элементов:\n");

if(!(scanf("%i",&y))||y<=0){

printf("Неккоректный ввод. Повторите\n");

fflush(stdin);}

else return y;}

       

}

float middle_arif(int quantity){

   float f,sum=0;

   int temp;

for(temp=0;temp<quantity;temp++){

 while(1){

printf("Введите %i элемент:\n",temp+1);

if(!(scanf("%f",&f))||f<0||f>100){

printf("Неккоректный ввод. Повторите\n");

fflush(stdin);

}

else{

 sum+=f;

 fflush(stdin);

 break;

}

        }}

   return sum/quantity;}

int main(){

setlocale(0,"");

printf("Среднее арифметическое значений равно %f",middle_arif(quantity()));

return 0;

}

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота