С Новым годом! Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 6
1

Составить словесное описание алгоритма пж

19.12.2021, 17:28. Показов 416. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
program cipher;
const
  KEY = 'ПЕЛИКАН';
  MSG = 'ТЕРМИНАТОР ПРИБЫВАЕТ СЕДЬМОГО В ПОЛНОЧЬ';
 
type
  TIndexArray = array of integer; 
 
function BubbleSort(text: string): TIndexArray;
var
  i, j, n: integer;
  count: integer;
  tmp_c: char;
  tmp_i: integer;
begin
  n := Length(text);
 
  SetLength(result, n);
  For i := 1 to n do
    result[i - 1] := i - 1;
 
  For j := 1 to n - 1 do begin
    count := 0;
    For i := 1 to n - j do begin
      if (text[i] > text[i + 1]) then begin
        tmp_c := text[i];
        text[i] := text[i + 1];
        text[i + 1] := tmp_c;
 
        tmp_i := result[i - 1];
        result[i - 1] := result[i];
        result[i] := tmp_i;
 
        Inc(count);
      end;
    end;
    if (count = 0) then break;
  end;
end;
 
function IntArrayToStr(int_array: TIndexArray): string;
var
  s: string;
  i: integer;
begin
  result := '';
  For i := 0 to Length(int_array) - 1 do begin
    Str(int_array[i], s);
    result := result + s;
  end;
end;
 
function Encrypt(keyword, message: string): string;
var
  index: integer;
  row, rows: integer;
  index_array: TIndexArray;
  position: integer;
begin
  index := Pos(' ', message);
  While (index > 0) do begin
    Delete(message, index, 1);
    index := Pos(' ', message);
  end;
 
  rows := Length(message) Div Length(keyword);
  if (Length(message) Mod Length(keyword) <> 0) then
    Inc(rows);
 
  index_array := BubbleSort(keyword);
  result := '';
 
  For row := 1 to rows do begin
    For index := 0 to Length(index_array) - 1 do begin
      position := index_array[index] * rows + row;
      if (position > Length(message)) then
        continue;
      result := result + message[position];
    end;
  end;
end;
 
function Decrypt(keyword, cipher: string): string;
var
  index: integer;
  row, rows: integer;
  index_array: TIndexArray;
  position: integer;
begin
  rows := Length(cipher) Div Length(keyword);
  if (Length(cipher) Mod Length(keyword) <> 0) then
    Inc(rows);
 
  index_array := BubbleSort(keyword);
  index_array := BubbleSort(IntArrayToStr(index_array));
  result := '';
 
  For index := 0 to Length(index_array) - 1 do begin
    For row := 0 to rows - 1 do begin
      position := (index_array[index] + 1) + Length(keyword) * row;
      if (position > Length(cipher)) then
        continue;
      result := result + cipher[position];
    end;
  end;
end;
 
var
  enc, dec: string;
begin
  WriteLn(KEY, ' / ', MSG);
  WriteLn;
  enc := Encrypt(KEY, MSG);
  WriteLn('ENC: ', enc);
  dec := Decrypt(KEY, enc);
  WriteLn('DEC: ', dec);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2021, 17:28
Ответы с готовыми решениями:

Вывести словесное описание числа на экран
Ввести с клавиатуры число от 1 до 999. Вывести словесное описание этого числа на экран. Например,...

Вывести в строчку N раз словесное описание числа K
C. Какое число? 0 Имя входного файла стандартный ввод Имя выходного файла стандартный вывод...

Нужно составить словесное описание алгоритма программы
1. Подсчитать среднемесячную температуру воздуха за июль. Определить, сколько дней температура...

Запиши словесное описание фрагмента алгоритма на языке Паскаль:
Запиши словесное описание фрагмента алгоритма на языке Паскаль: 1) Если число Х равно 47, то...

1
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 609
23.12.2021, 09:04 2
чучуть сделал, ну а дальше кому не лень можете продолжить

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
program cipher;
const
  KEY = 'ПЕЛИКАН';
  MSG = 'ТЕРМИНАТОР ПРИБЫВАЕТ СЕДЬМОГО В ПОЛНОЧЬ';
 
type
  TIndexArray = array of integer;  // Тип: массив целых чисел
 
function BubbleSort(text: string): TIndexArray;  // Пузырьковая сортировка, на выходе в result записывается массив целых чисел
var
  i, j, n: integer;
  count: integer;
  tmp_c: char;
  tmp_i: integer;
begin
  n := Length(text);  // n - это длина строки text
 
  SetLength(result, n);  // размер массива результата сортировки:= n
  For i := 1 to n do     // от 1 до конца массива
    result[i - 1] := i - 1;  // заносим в result значение текущего индекса (счёт индекса идёт от нуля, т.к. n-1, хотя можно было выше написать For i:= 0 to n-1 do)
 
  For j := 1 to n - 1 do begin // тут от 1 до n-1
    count := 0;  // значению count каждый раз присваивается 0
    For i := 1 to n - j do begin  // от 1 (i увеличивается) до n-j (n - уменьшается, т.к. j увеличивается |см. цикл выше|)
      if (text[i] > text[i + 1]) then begin // Если текущий символ строки больше следующего элемента
        tmp_c := text[i];  // заносим его во временный символ
        text[i] := text[i + 1]; // а в него самого заносим следующий символ
        text[i + 1] := tmp_c;  // а в следующий символ заносим символ со временного символа, тоесть больший поменяли местами м меньшим
 
        tmp_i := result[i - 1]; // во временный целочисленный элемент заносим значение с массива результата [i-1]
        result[i - 1] := result[i];  // а на его место ставим следующее значение
        result[i] := tmp_i;  // на место следующего ставим значение предыдущего (которое мы созранили во временном элементе), короче как и там поменяли местами 2 соседних элемента
 
        Inc(count); // увеличиваем наш count на 1
      end; // закрываем цикл раз, который вот этот (if (text[i] > text[i + 1]) then begin)
    end; // закрываем цикл два, который вот этот (For i := 1 to n - j do begin)
    if (count = 0) then break; // если не было переноса, т.е. не выполнялось условие (text[i] > text[i + 1]), то выходим из цикла
  end; // закрываем вот ето: (For j := 1 to n - 1 do begin)
end; // а тут конец самой функции бабл сорт
 
function IntArrayToStr(int_array: TIndexArray): string; // функция переводит целочисленное значение в текстовое, типа из int в string,  на выходе у неё стринг, а на входе массив integer
var
  s: string;
  i: integer;
begin
  result := ''; // Очищаем результат
  For i := 0 to Length(int_array) - 1 do begin // от 0 до конца массива
    Str(int_array[i], s); // заносим цифру в виде строчного значения в s
    result := result + s; // в результат функции добавляем s
  end;
end;
 
function Encrypt(keyword, message: string): string; // функция которая получает 2 стринга и выводит 1 стринг
var
  index: integer;
  row, rows: integer;
  index_array: TIndexArray;
  position: integer;
begin
  index := Pos(' ', message);
  While (index > 0) do begin
    Delete(message, index, 1);
    index := Pos(' ', message);
  end;
 
  rows := Length(message) Div Length(keyword);
  if (Length(message) Mod Length(keyword) <> 0) then
    Inc(rows);
 
  index_array := BubbleSort(keyword);
  result := '';
 
  For row := 1 to rows do begin
    For index := 0 to Length(index_array) - 1 do begin
      position := index_array[index] * rows + row;
      if (position > Length(message)) then
        continue;
      result := result + message[position];
    end;
  end;
end;
 
function Decrypt(keyword, cipher: string): string;
var
  index: integer;
  row, rows: integer;
  index_array: TIndexArray;
  position: integer;
begin
  rows := Length(cipher) Div Length(keyword);
  if (Length(cipher) Mod Length(keyword) <> 0) then
    Inc(rows);
 
  index_array := BubbleSort(keyword);
  index_array := BubbleSort(IntArrayToStr(index_array));
  result := '';
 
  For index := 0 to Length(index_array) - 1 do begin
    For row := 0 to rows - 1 do begin
      position := (index_array[index] + 1) + Length(keyword) * row;
      if (position > Length(cipher)) then
        continue;
      result := result + cipher[position];
    end;
  end;
end;
 
var
  enc, dec: string;
begin
  WriteLn(KEY, ' / ', MSG);
  WriteLn;
  enc := Encrypt(KEY, MSG);
  WriteLn('ENC: ', enc);
  dec := Decrypt(KEY, enc);
  WriteLn('DEC: ', dec);
end.
0
23.12.2021, 09:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2021, 09:04
Помогаю со студенческими работами здесь

Запишите словесное описание фрагмента алгоритма на языке Pascal
ЕСЛИ х&lt;= 15 ТО Y присвоить значение х/2 Z присвоить значение 15/х ИНАЧЕ Y присвоить значение...

Составить словесное (математическое) описание
Составить словесное (математическое) описание следующей задаче:. Вычислить значение выражения ....

Составить словесное (математическое) описание и блок-схему
Доброго дня форумчане помогите Составить словесное (математическое) описание и блок-схему следующей...

Составить словесное (математическое) описание и блок-схему
Turbo Pascal .Составить словесное (математическое) описание и блок-схему следующей задаче

Составить словесное (математическое) описание и блок-схему
Составить словесное (математическое) описание и блок-схему следующей задаче: найти периметр ромба,...

Составить словесное (математическое) описание и блок-схему следующей задаче


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

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