Составить функцию, которая в одномерном массиве D определяет первый от конца положительный элемент - Pascal

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

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

Составить функцию, которая в одномерном массиве D определяет первый от конца положительный элемент. В случае нахождения положительного числа функция возвращает найденное число, в противном случае возвращает -1. С помощью функции определить в каждой строке матрицы H(l,m), l≤12, m≤14, первые от конца положительные элементы, которые записать без пропусков в массив P. Полученный массив P упорядочить по убыванию методом нахождения минимального. Вывести полученный массив, если он не пуст, или сообщение об отсутствии в матрице положительных чисел в ином случае.

Решение задачи: «Составить функцию, которая в одномерном массиве D определяет первый от конца положительный элемент»

textual
Листинг программы
const
  lmax = 12;
  mmax = 14;
 
type
  mas = array[1..mmax] of integer;
  matr = array[1..lmax] of mas;
 
var
  H: matr;
  P: array[1..lmax] of integer;
  i, j, l, m, imin: integer;
  t: integer;
 
function firstPositive(D: mas; m: integer): integer;
var
  i, r: integer;
begin
  r := -1;
  i := m;
  while (i > 0) and (r = -1) do
  begin
    if D[i] > 0 then r := D[i];
    i := i - 1;
  end;
  firstPositive := r;
end;
 
begin
  Randomize;
  repeat
    write('l: ');
    readln(l);
  until (l > 0) and (l <= lmax);
  repeat
    write('m: ');
    readln(m);
  until (m > 0) and (m <= mmax);
  writeln('Матрица H');
  for i := 1 to l do
  begin
    for j := 1 to m do
    begin
      H[i][j] := random(30) - 20;
      write(H[i][j]:4);
    end;
    writeln;
  end;
  writeln('Массив P');
  for i := 1 to l do
  begin
    P[i] := firstPositive(H[i], m);
    write(P[i]:4);
  end;  
  for i := 1 to l do
  begin
    imin := 1;
    for j := 2 to l - i + 1 do
      if P[imin] > P[j] then imin := j;
    if imin <> l - i + 1 then
    begin
      t := P[imin];
      P[imin] := P[l - i + 1];
      P[l - i + 1] := t;
    end;
  end;
  writeln;
  writeln('Отсортированный массив P');
  for i := 1 to l do
    write(P[i]:4);
  readln;
end.

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

  1. В начале кода объявляются константы lmax и mmax, которые определяют максимальное количество элементов в одномерном массиве.
  2. Затем объявляется тип данных mas, который представляет собой одномерный массив целых чисел.
  3. Далее объявляются переменные H и P, которые представляют собой матрицу и массив соответственно.
  4. В функции firstPositive определяется функция, которая возвращает первый положительный элемент в массиве D.
  5. В основной части программы происходит следующее:
    • Пользователю предлагается ввести значение l и m.
    • Создается матрица H, заполненная случайными числами.
    • Создается массив P, где каждый элемент равен первому положительному элементу в соответствующем подмассиве матрицы H.
    • Выводится матрица H.
    • Выводится массив P.
    • Выполняется сортировка массива P по возрастанию.
    • Выводится отсортированный массив P.
  6. Конец программы.

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


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

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

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