Вычислить среднее арифметическое кодов элементов отсортированного массива, имеющих индекс кратный трем - Turbo Pascal
Формулировка задачи:
Дан одномерный массив латинских букв. Отсортировать их методом выбора в порядке убывания. Вычислить среднее арифметическое кодов элементов отсортированного массива, имеющих индекс кратный трем. Вывести на экран отсортированный массив и вычисленное значение. Помогите решить пожалуйста!!! Срочно,могу отблагодарить! Заранее спасибо!
Решение задачи: «Вычислить среднее арифметическое кодов элементов отсортированного массива, имеющих индекс кратный трем»
textual
Листинг программы
- program Project2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- var
- arr: array [1..10] of string;
- I: integer;
- sum, num: integer;
- res: extended;
- procedure sort(sym, down, up: integer);
- var
- i, j, least: integer;
- str1, str2, tmp: string;
- function NumSym(ch: string): integer;
- var
- I: integer;
- keys: array [1..26] of string;
- begin
- keys[1] := ' a';
- keys[2] := ' b';
- keys[3] := ' c';
- keys[4] := ' d';
- keys[5] := ' e';
- keys[6] := ' f';
- keys[7] := ' g';
- keys[8] := ' h';
- keys[9] := ' i';
- keys[10] := ' j';
- keys[11] := ' k';
- keys[12] := ' l';
- keys[13] := ' m';
- keys[14] := ' n';
- keys[15] := ' o';
- keys[16] := ' p';
- keys[17] := ' q';
- keys[18] := ' r';
- keys[19] := ' s';
- keys[20] := ' t';
- keys[21] := ' u';
- keys[22] := ' v';
- keys[23] := ' w';
- keys[24] := ' x';
- keys[25] := ' y';
- keys[26] := ' z';
- ch := ' ' + ch;
- for i := 1 to 26 do
- begin
- if (ch = (keys[i])) or (ch = UpperCase(keys[i])) then
- begin
- result := i;
- exit;
- end;
- end;
- end;
- begin
- for i := down to up do
- begin
- least := i;
- for j := i to up do
- begin
- str1 := arr[j];
- str2 := arr[least];
- if (sym <= length(str1)) and (sym <= length(str2))
- then
- begin
- if NumSym(str1[sym]) > NumSym(str2[sym]) then
- least := j;
- if NumSym(str1[sym]) = NumSym(str2[sym]) then
- sort(Sym+1, j, least+1);
- end;
- end;
- //str1 := form1.mmo2.Lines[i];
- //tmp := NumSym(str1[sym]);
- tmp := arr[i];
- arr[i] := arr[least];
- arr[least] := (tmp);
- end;
- end;
- begin
- arr[2] := 'WinApi';
- arr[1] := 'Window';
- arr[3] := 'fff';
- arr[4] := 'some';
- arr[5] := 'my';
- arr[6] := 'boltushcaru';
- arr[7] := 'haha';
- arr[8] := 'trololo';
- arr[9] := 'syyr';
- arr[10] := 'fsdh';
- sort(1, 1, 10);
- sum := 0;
- num := 0;
- for i := 1 to 10 do
- begin
- writeln(arr[i]);
- if i mod 3 = 0 then
- begin
- sum := sum + i;
- num := num + 1;
- end;
- end;
- res := sum / num;
- writeln(res);
- readln;
- end.
Объяснение кода листинга программы
Этот код написан на Turbo Pascal и выполняет следующие действия:
- Создает массив
arr
с 10 элементами, каждый из которых является строкой. - Инициализирует переменные
sum
,num
иres
нулевыми значениями. - Заполняет массив
arr
строками, используя значения из ключей ASCII. - Реализует функцию
NumSym
, которая определяет индекс символа в строке. - Применяет алгоритм сортировки, описанный в книге
Структуры данных и алгоритмы в Java
Роберта Лафоре, чтобы отсортировать массивarr
. - Вычисляет среднее арифметическое кодов элементов массива, имеющих индекс, кратный трем, и выводит результат. Вот список действий, выполненных в коде, с номерами в соответствии с порядком:
- Создание массива
arr
. - Инициализация переменных
sum
,num
иres
. - Заполнение массива
arr
. - Реализация функции
NumSym
. - Применение алгоритма сортировки.
- Вычисление среднего арифметического кодов элементов массива, имеющих индекс, кратный трем.
- Вывод результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д