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

  1. Создает массив arr с 10 элементами, каждый из которых является строкой.
  2. Инициализирует переменные sum, num и res нулевыми значениями.
  3. Заполняет массив arr строками, используя значения из ключей ASCII.
  4. Реализует функцию NumSym, которая определяет индекс символа в строке.
  5. Применяет алгоритм сортировки, описанный в книге Структуры данных и алгоритмы в Java Роберта Лафоре, чтобы отсортировать массив arr.
  6. Вычисляет среднее арифметическое кодов элементов массива, имеющих индекс, кратный трем, и выводит результат. Вот список действий, выполненных в коде, с номерами в соответствии с порядком:
  7. Создание массива arr.
  8. Инициализация переменных sum, num и res.
  9. Заполнение массива arr.
  10. Реализация функции NumSym.
  11. Применение алгоритма сортировки.
  12. Вычисление среднего арифметического кодов элементов массива, имеющих индекс, кратный трем.
  13. Вывод результата.

Оцени полезность:

14   голосов , оценка 4.357 из 5
Похожие ответы