0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 41
1

Шифрование

30.10.2017, 15:31. Показов 798. Ответов 3

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, что сделать, чтобы индекс не был вне массива. Например, ошибка выскакивает если сместить на 150

Ошибка: Unhandled Exception: System.IndexOutOfRangeException: Индекс находился вне границ массива.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const
  b='абвгдежзиклмнопрстуфхцчшщъыьэюя ';
var
  i,j,k:Integer;
  a,c:String;
begin
  if d <= 0 then 
    d := 32 - Abs(d) mod 32;
    for i:=1 to length(a) do
      for j:=1 to length(b) do
        begin
          k:=(j-d+32) mod 31;
          if a[i]=b[j] then c:=c+b[k];
        end;  
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2017, 15:31
Ответы с готовыми решениями:

Шифрование текста
Мне нужно написать программу, которая переводит обычный текст в набор чисел. Например, &quot;слон&quot;...

Шифрование и дешифрование
Прошу помощи экспертов(с комментариями,пожалуйста ) Задача : Метод шифровки текста с помощью...

RSA шифрование
Всем привет. Очень нужна помощь: нужно, чтобы в программу исходное сообщение заносилось в виде...

Шифрование предложения змейкой
задание такое, вводится предложение, и нужно его зашифровать в динмаический квадратный массив(т.е....

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
30.10.2017, 15:35 2
Цитата Сообщение от hlr52917 Посмотреть сообщение
что сделать
Для начала - показать код, который хотя бы компилируется, а не этот огрызок.
0
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 41
30.10.2017, 15:38  [ТС] 3
volvo, держи
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
uses crt;
const
b='абвгдежзиклмнопрстуфхцчшщъыьэюя ';
var
a,c:string;
d,m:integer;
 
procedure Encrypt(a:string;d:integer);
var
i,j,k:integer;
begin
if d <= 0 then 
    d := 32 - Abs(d) mod 32;
for i:=1 to length(a) do
    for j:=1 to length(b) do
    begin
       k:=(j + d - 1) mod 31;
       if a[i]=b[j] then c:=c+b[k];
    end;
end;
  
begin
Write('Введите открытый текст: '); 
Readln(a);
Write('Введите значение ключа: '); 
Readln(d);
repeat
    Writeln('Выбор метода:');
    Writeln('1-Шифровать');
    //writeln('2-Расшифровать');
Readln(m);
case m of
1:Encrypt(a,d);
//2: DecryptStr(S);
else Break;
end;
Writeln(c); { печатаем результат }
until false;
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
01.11.2017, 14:16 4
Pascal
17
k:=(j + d - 1) mod 31;
Переменная K принимает значения от 0 до 30, и при попытке обратиться к b[0] получается вылет за пределы массива. Решение - в следующей строке прибавить 1-цу:
Pascal
18
if a[i]=b[j] then c:=c+b[k + 1];
0
01.11.2017, 14:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2017, 14:16
Помогаю со студенческими работами здесь

Шифрование простой перестановкой
Написать программу, которое зашифрует слово простой перестановкой (строки и столбцы задавать...

Шифрование и дешифрование текста
Для английского и русского алфавита. На вход поступает текст, его следует зашифровать. Каждой букве...

Шифрование методом Виженера
Добрый день, у меня есть код шиврования методом Виженера, мне нужно дописать дешифрование, прошу...

Шифрование и дешифрование методами перестановки
Алгоритм-Одиночная перестановка по ключу Строк – 6; Столбцов – сколько потребуется Ключ -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru