Разработка в среде 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
Листинг программы
- var s: array[1..4, 1..9] of integer;
- x: array[1..36] of integer;
- a, b, i, j, k, t, min: integer;
- sg: real;
- f: boolean;
- begin
- {формирование матрицы s}
- randomize;
- for i := 1 to 4 do
- for j := 1 to 9 do
- s[i, j] := -10 + random(17);
- {печать матрицы s}
- writeln('Matrix S:');
- for i := 1 to 4 do
- begin
- for j := 1 to 9 do write(s[i, j]:4);
- writeln
- end;
- {копирование матрицы S в массив X}
- for i := 1 to 4 do
- for j := 1 to 9 do
- x[(i - 1) * 9 + j] := s[i, j];
- {печать массива x}
- writeln('Array X:');
- for i := 1 to 36 do write(x[i]:4);
- writeln;
- {вычисление среднего геометрического каждых третьих элементов последней четверти массива x}
- t := 1; {произведение элементов}
- k := 0; {количество элементов}
- for i := 28 to 36 do
- if (i - 28) mod 3 = 2 {на самом деле, будут приняты во внимание элементы 30, 33 и 36}
- then begin
- t := t * x[i];
- inc(k) {естественно, в конце концов будет k=3}
- end;
- {вычисление среднего геометрического по формуле sg = корень k-й степени из t}
- if t > 0
- then sg := exp(ln(t) / k)
- else if t < 0
- then sg := -exp(ln(-t) / k)
- else sg := 0;
- {печать среднего геометрического каждых третьих элементов последней четверти массива x}
- writeln('Average geometrical every third element of last quarter of array X = ', sg:0:7);
- {определение наименьшего из чётных по значению элементов массива x}
- min := 7; {любое, главное, больше 6, то есть, больше наибольшего}
- for i := 1 to 36 do
- if not odd(x[i]) and (x[i] < min)
- then min := x[i];
- {печать результата}
- if min = 7 {минимум среди чётных не найден?}
- then writeln('Even even elements aren''t found in array X') {чётных нет, минимум не найден}
- else writeln('Minimum even element of array X = ', min); {чётные есть, печать минимума}
- {упорядочение принадлежащих [a/2; b/2] элементов первой половины массива X по НЕУБЫВАНИЮ квадратов значений}
- {остальные элементы остаются на своих местах}
- write('a = '); {ввод a}
- readln(a);
- repeat {ввод b с проверкой}
- write('b >= a; b = ');
- readln(b)
- until b >= a;
- a := a div 2;
- b := b div 2;
- f := false;
- {сортировка обменом по заданному условию}
- for i := 1 to 17 do
- if (x[i] >= a) and (x[i] <= b)
- then for j := i + 1 to 18 do
- if (x[j] >= a) and (x[j] <= b) and (sqr(x[j]) < sqr(x[i]))
- then begin
- f := true;
- t := x[i];
- x[i] := x[j];
- x[j] := t
- end;
- {печать результата сортировки}
- if f {обмены были?}
- then begin {обмены были, печатаем отсортированный массив}
- writeln('Elements of first half of array X of range [a/2, b/2] are sorted:');
- for i := 1 to 36 do write(x[i]:4);
- writeln
- end
- else writeln('In first half of array X there are no elements from range [a/2, b/2]'); {обменов не было, печатать массив нет смысла}
- {ожидание реакции пользователя перед закрытием программы}
- write('Press <Enter> to exit');
- readln
- end.
Объяснение кода листинга программы
- Создается массив s размером 4x9, где каждый элемент представляет собой целое число. Значения элементов случайно генерируются в диапазоне от -10 до 10.
- Выводится матрица s с помощью команды writeln.
- Копируется массив s в массив x. Это делается путем перебора элементов массива s и записи соответствующих значений в массив x.
- Вычисляется среднее геометрическое для каждых третьих элементов последней четверти массива x. Для этого используется формула exp(ln(t) / k), где t - произведение элементов, а k - количество элементов.
- Определяется наименьший из четных элементов массива x. Для этого перебираются все элементы массива и проверяется условие: элемент должен быть четным и меньше текущего минимального значения. Если находится такой элемент, то он становится новым минимальным значением.
- Выводится результат упорядочивания элементов первой половины массива x по условию sqr(x[i]) <= sqr(x[j]). Элементы, которые не удовлетворяют этому условию, остаются на своих местах.
- Запрашивается ввод значения a и b.
- Выполняется сортировка элементов первой половины массива x по условию sqr(x[i]) <= sqr(x[j]). Если выполнены обмены, то выводится отсортированный массив. В противном случае выводится сообщение о том, что в первой половине массива нет элементов из заданного диапазона.
- Выводится сообщение о том, что нужно нажать
, чтобы выйти из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д