Вычислить среднее арифметическое кодов элементов отсортированного массива, имеющих индекс кратный трем - 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
. - Применение алгоритма сортировки.
- Вычисление среднего арифметического кодов элементов массива, имеющих индекс, кратный трем.
- Вывод результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д