Обработка одномерных массивов - Pascal ABC (247839)
Формулировка задачи:
Можете помочь:
Используя датчик случайных чисел, заполнить массив целыми значениями, лежащими в
диапазоне от -12 до 80.
А) Требуется умножить все положительные элементы на квадрат наименьшего.
Б) Сформировать массив из элементов массива больших 50.
В) Найти в массиве заданный элемент Х
Решение задачи: «Обработка одномерных массивов»
textual
Листинг программы
program prog1; const n = 100; arrAlowLim = -12; arrAtopLim = 80; type arrOfInt = array [1..n] of integer; function printRandomArr(topLim, lowLim: integer): arrOfInt; var arrA: arrOfInt; cter: integer; begin WriteLn('Массив:'); for cter := 1 to n do begin arrA[cter] := random(lowLim, topLim); Write(arrA[cter], ' '); end; printRandomArr := arrA; end; function MinOfArr(arrA: arrOfInt): integer; var cter, MinOfarrA: integer; begin MinOfarrA := arrA[1]; for cter := 2 to n do if arrA[cter] < MinOfarrA then MinOfarrA := arrA[cter]; MinOfArr := MinOfarrA; end; procedure printSearchResult(var x, poz: integer); begin WriteLn('Элемент', ' ', x, ' ', 'найден. Его номер в массиве:', ' ', poz); end; function SearchXInArr(arrA: arrOfInt): boolean; var x, cter: integer; begin SearchXInArr := false; Write('Введите X: '); ReadLn(x); for cter := 1 to n do if arrA[cter] = x then begin SearchXInArr := true; printSearchResult(x, cter); end; end; function PutPztvAndQminInArr(arrA: arrOfInt): arrOfInt; var cter: integer; begin WriteLn('Тот же массив после умножения положительных на квадрат минимального:'); for cter := 1 to n do begin if arrA[cter] > 0 then arrA[cter] := arrA[cter] * sqr(MinOfarr(arrA)); Write(arrA[cter], ' '); end; PutPztvAndQminInArr := arrA; end; function PutOverFiftyInArr(arrA: arrOfInt): boolean; var cter, SzOfArrB: integer; arrB: arrOfInt; begin SzOfArrB := 0; for cter := 1 to n do if arrA[cter] > 50 then begin inc(SzOfArrB); arrB[SzOfArrB] := arrA[cter]; end; if SzOfArrB <> 0 then begin PutOverFiftyInArr := true; WriteLn('Массив 2 из элементов 1-го массива больших 50'); for cter := 1 to SzOfArrB do Write(arrB[cter], ' '); end else PutOverFiftyInArr := false; end; var arrA: arrOfInt; begin arrA := printRandomArr(arrAlowLim, arrAtopLim); WriteLn; if PutPztvAndQminInArr(arrA) = arrA then WriteLn('В массиве не оказалось положительных чисел'); WriteLn; if not (PutOverFiftyInArr(arrA)) then WriteLn('Элементов больше 50 не обнаружено'); WriteLn; if not (SearchXInArr(arrA)) then WriteLn('Такой элемент не найден'); Writeln('Конец программы...'); end.
Объяснение кода листинга программы
- Объявлены константы: n = 100, arrAlowLim = -12, arrAtopLim = 80.
- Объявлена типовая переменная: arrOfInt = array [1..n] of integer.
- Определена функция printRandomArr(topLim, lowLim: integer): arrOfInt; которая принимает два параметра: верхнюю границу topLim и нижнюю границу lowLim для генерации случайных чисел. Функция заполняет массив случайными числами в указанном диапазоне и выводит результат на экран.
- Определена функция MinOfArr(arrA: arrOfInt): integer; которая принимает массив arrA и возвращает минимальное значение из этого массива.
- Определена процедура printSearchResult(var x, poz: integer); которая принимает два параметра: искомый элемент x и его номер в массиве poz. При нахождении элемента выводит сообщение об этом на экран.
- Определена функция SearchXInArr(arrA: arrOfInt): boolean; которая принимает массив arrA и ищет в нем заданный элемент X. Если элемент найден, функция возвращает true, иначе - false.
- Определена функция PutPztvAndQminInArr(arrA: arrOfInt): arrOfInt; которая принимает массив arrA и умножает все положительные числа на квадрат минимального числа из массива. Результат выводится на экран.
- Определена функция PutOverFiftyInArr(arrA: arrOfInt): boolean; которая принимает массив arrA и выводит на экран все элементы больше 50, если таковые имеются.
- Создана переменная arrA типа arrOfInt.
- В основной программе происходит следующее:
- Вызывается функция printRandomArr(arrAlowLim, arrAtopLim), результатом которой является заполненный случайными числами массив arrA.
- Выводится сообщение о том, что в массиве не оказалось положительных чисел, если функция PutPztvAndQminInArr(arrA) вернула arrA.
- Выводится сообщение о том, что элементов больше 50 не обнаружено, если функция PutOverFiftyInArr(arrA) вернула false.
- Вызывается функция SearchXInArr(arrA), результатом которой является булево значение, указывающее на то, найден ли заданный элемент X в массиве.
- Выводится сообщение
Конец программы...
.