Обработка одномерных массивов - 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.

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

  1. Объявлены константы: n = 100, arrAlowLim = -12, arrAtopLim = 80.
  2. Объявлена типовая переменная: arrOfInt = array [1..n] of integer.
  3. Определена функция printRandomArr(topLim, lowLim: integer): arrOfInt; которая принимает два параметра: верхнюю границу topLim и нижнюю границу lowLim для генерации случайных чисел. Функция заполняет массив случайными числами в указанном диапазоне и выводит результат на экран.
  4. Определена функция MinOfArr(arrA: arrOfInt): integer; которая принимает массив arrA и возвращает минимальное значение из этого массива.
  5. Определена процедура printSearchResult(var x, poz: integer); которая принимает два параметра: искомый элемент x и его номер в массиве poz. При нахождении элемента выводит сообщение об этом на экран.
  6. Определена функция SearchXInArr(arrA: arrOfInt): boolean; которая принимает массив arrA и ищет в нем заданный элемент X. Если элемент найден, функция возвращает true, иначе - false.
  7. Определена функция PutPztvAndQminInArr(arrA: arrOfInt): arrOfInt; которая принимает массив arrA и умножает все положительные числа на квадрат минимального числа из массива. Результат выводится на экран.
  8. Определена функция PutOverFiftyInArr(arrA: arrOfInt): boolean; которая принимает массив arrA и выводит на экран все элементы больше 50, если таковые имеются.
  9. Создана переменная arrA типа arrOfInt.
  10. В основной программе происходит следующее:
    • Вызывается функция printRandomArr(arrAlowLim, arrAtopLim), результатом которой является заполненный случайными числами массив arrA.
    • Выводится сообщение о том, что в массиве не оказалось положительных чисел, если функция PutPztvAndQminInArr(arrA) вернула arrA.
    • Выводится сообщение о том, что элементов больше 50 не обнаружено, если функция PutOverFiftyInArr(arrA) вернула false.
    • Вызывается функция SearchXInArr(arrA), результатом которой является булево значение, указывающее на то, найден ли заданный элемент X в массиве.
  11. Выводится сообщение Конец программы....

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

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