Разработка в среде Turbo Pascal программы формирования и обработки элементов одномерного массива

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, хотел бы попросить у Вас помощи в решение задач в turbo pascal:

Разработка в среде Turbo Pascal программы формирования и обработки элементов одномерного массива:

1) Сформируйте двухмерный целочисленный массив S(4x9), используя генератор случайных чисел на интервале (-10, 6). Элементы массива вывести на экран в виде матрицы. 2) Преобразуйте массив S в одномерный массив X. Полученный массив вывести на экран. 3) Вычислите среднегеометрическое значение каждых третьих элементов последней четверти массива X. 4) Среди четных по значению элементов массива X определите наименьший. 5) упорядочить принадлежащие интервалу [a/2;b/2] элементы первой половины массива X по возрастанию квадратов значений. Заранее благодарен за помощь.

Решение задачи: «Разработка в среде Turbo Pascal программы формирования и обработки элементов одномерного массива»

textual
Листинг программы
  1. var s: array[1..4, 1..9] of integer;
  2.     x: array[1..36] of integer;
  3.     a, b, i, j, k, t, min: integer;
  4.     sg: real;
  5.     f: boolean;
  6. begin
  7.   {формирование матрицы s}
  8.   randomize;
  9.   for i := 1 to 4 do
  10.     for j := 1 to 9 do
  11.       s[i, j] := -10 + random(17);
  12.   {печать матрицы s}
  13.   writeln('Matrix S:');
  14.   for i := 1 to 4 do
  15.     begin
  16.       for j := 1 to 9 do write(s[i, j]:4);
  17.       writeln
  18.     end;
  19.   {копирование матрицы S в массив X}
  20.   for i := 1 to 4 do
  21.     for j := 1 to 9 do
  22.       x[(i - 1) * 9 + j] := s[i, j];
  23.   {печать массива x}
  24.   writeln('Array X:');
  25.   for i := 1 to 36 do write(x[i]:4);
  26.   writeln;
  27.   {вычисление среднего геометрического каждых третьих элементов последней четверти массива x}
  28.   t := 1; {произведение элементов}
  29.   k := 0; {количество элементов}
  30.   for i := 28 to 36 do
  31.     if (i - 28) mod 3 = 2 {на самом деле, будут приняты во внимание элементы 30, 33 и 36}
  32.       then begin
  33.         t := t * x[i];
  34.         inc(k) {естественно, в конце концов будет k=3}
  35.       end;
  36.   {вычисление среднего геометрического по формуле sg = корень k степени из t}
  37.   if t > 0
  38.     then sg := exp(ln(t) / k)
  39.     else if t < 0
  40.       then sg := -exp(ln(-t) / k)
  41.       else sg := 0;
  42.   {печать среднего геометрического каждых третьих элементов последней четверти массива x}
  43.   writeln('Average geometrical every third element of last quarter of array X = ', sg:0:7);
  44.   {определение наименьшего из чётных по значению элементов массива x}
  45.   min := 7; {любое, главное, больше 6, то есть, больше наибольшего}
  46.   for i := 1 to 36 do
  47.     if not odd(x[i]) and (x[i] < min)
  48.       then min := x[i];
  49.   {печать результата}
  50.   if min = 7 {минимум среди чётных не найден?}
  51.     then writeln('Even even elements aren''t found in array X') {чётных нет, минимум не найден}
  52.     else writeln('Minimum even element of array X = ', min); {чётные есть, печать минимума}
  53.   {упорядочение принадлежащих [a/2; b/2] элементов первой половины массива X по НЕУБЫВАНИЮ квадратов значений}
  54.   {остальные элементы остаются на своих местах}
  55.   write('a = '); {ввод a}
  56.   readln(a);
  57.   repeat {ввод b с проверкой}
  58.     write('b >= a;  b = ');
  59.     readln(b)
  60.   until b >= a;
  61.   a := a div 2;
  62.   b := b div 2;
  63.   f := false;
  64.   {сортировка обменом по заданному условию}
  65.   for i := 1 to 17 do
  66.     if (x[i] >= a) and (x[i] <= b)
  67.       then for j := i + 1 to 18 do
  68.         if (x[j] >= a) and (x[j] <= b) and (sqr(x[j]) < sqr(x[i]))
  69.           then begin
  70.             f := true;
  71.             t := x[i];
  72.             x[i] := x[j];
  73.             x[j] := t
  74.           end;
  75.   {печать результата сортировки}
  76.   if f {обмены были?}
  77.     then begin {обмены были, печатаем отсортированный массив}
  78.       writeln('Elements of first half of array X of range [a/2, b/2] are sorted:');
  79.       for i := 1 to 36 do write(x[i]:4);
  80.       writeln
  81.     end
  82.     else writeln('In first half of array X there are no elements from range [a/2, b/2]'); {обменов не было, печатать массив нет смысла}
  83.   {ожидание реакции пользователя перед закрытием программы}
  84.   write('Press <Enter> to exit');
  85.   readln
  86. end.

Объяснение кода листинга программы

  1. Создается массив s размером 4x9, где каждый элемент представляет собой целое число. Значения элементов случайно генерируются в диапазоне от -10 до 10.
  2. Выводится матрица s с помощью команды writeln.
  3. Копируется массив s в массив x. Это делается путем перебора элементов массива s и записи соответствующих значений в массив x.
  4. Вычисляется среднее геометрическое для каждых третьих элементов последней четверти массива x. Для этого используется формула exp(ln(t) / k), где t - произведение элементов, а k - количество элементов.
  5. Определяется наименьший из четных элементов массива x. Для этого перебираются все элементы массива и проверяется условие: элемент должен быть четным и меньше текущего минимального значения. Если находится такой элемент, то он становится новым минимальным значением.
  6. Выводится результат упорядочивания элементов первой половины массива x по условию sqr(x[i]) <= sqr(x[j]). Элементы, которые не удовлетворяют этому условию, остаются на своих местах.
  7. Запрашивается ввод значения a и b.
  8. Выполняется сортировка элементов первой половины массива x по условию sqr(x[i]) <= sqr(x[j]). Если выполнены обмены, то выводится отсортированный массив. В противном случае выводится сообщение о том, что в первой половине массива нет элементов из заданного диапазона.
  9. Выводится сообщение о том, что нужно нажать , чтобы выйти из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы