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