Найти в каждой строке матрицы первый отрицательный элемент - Turbo Pascal

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

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

Заданы две матрицы А(6,6) и В(6,6). Для матрицы, которая отвечает заданному условию (1) выполните преобразования (2) в соответствии с вариантом задания 1 -больше количество нулевых элементов в четных столбцах и нечетных строках 2 - найти в каждой строке первый отрицательный элемент. Условие (1) проверить в подпрограмме Function, преобразование выполнить в подпрограмме Procedure.

Решение задачи: «Найти в каждой строке матрицы первый отрицательный элемент»

textual
Листинг программы
uses crt;
const n=6;
type mtr=array[1..n,1..n] of integer;
procedure matrix(var a:mtr;c:char);
var i,j:byte;
begin
writeln('Матрица ',c);
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=-3+random(7);
    write(a[i,j]:4);
   end;
  writeln
 end;
end;
function kol_zero(a:mtr):byte;
var i,j,k:byte;
begin
k:=0;
for i:=1 to n do
for j:=1 to n do
if(a[i,j]=0)and(odd(i)or not odd(j)) then inc(k);
kol_zero:=k
end;
procedure per_otr(a:mtr);
var i,j,k:byte;
begin
writeln('Первые отрицательные элементы строк');
for i:=1 to n do
 begin
  j:=1;
  k:=0;
  write(i,' ');
  while(j<=n)and(k=0) do
  if a[i,j]<0 then
   begin
    writeln(a[i,j]);
    k:=1
   end
  else inc(j);
  if k=0 then writeln('нет');
 end;
end;
var a,b:mtr;
    ka,kb:byte;
begin
clrscr;
randomize;
matrix(a,'A');
ka:=kol_zero(a);
writeln('Количество 0 в четных столбцах и нечетных строках=',ka);
matrix(b,'B');
kb:=kol_zero(b);
writeln('Количество 0 в четных столбцах и нечетных строках=',kb);
if ka>kb then
 begin
  writeln('В матрице A больше');
  per_otr(a)
 end
else if ka<kb then
 begin
  writeln('В матрице B больше');
  per_otr(b)
 end
else write('В обеих матрицах одинаково');
readln
end.

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

  1. В начале кода подключается библиотека crt, которая обеспечивает функции для работы с потоками ввода-вывода.
  2. Затем определяется константа n, которая определяет размерность матрицы (в данном случае равна 6).
  3. Определяется тип данных mtr, который представляет собой массив целых чисел размером n x n.
  4. Создается процедура matrix, которая принимает в качестве параметра переменную a типа mtr и символ c, обозначающий название матрицы. Внутри этой процедуры выводится название матрицы и затем происходит итерация по всем элементам матрицы. Для каждого элемента выполняется следующая последовательность действий:
    • присваивается значение a[i,j] и выводится его значение с помощью функции write.
    • выводится символ новой строки с помощью функции writeln.
  5. Определяется функция kol_zero, которая принимает в качестве параметров переменные i и j типа byte и возвращает тип byte. Эта функция выполняет следующие действия:
    • инициализирует переменную k значением 0.
    • выполняет цикл по всем элементам матрицы a[i,j].
    • Если текущий элемент равен 0 и его индексы i и j являются четными числами (определяется с помощью функций odd и not), то увеличивается значение переменной k.
    • Возвращается значение k.
  6. Определяется процедура per_otr, которая принимает в качестве параметров переменные i, j и k типа byte. Эта процедура выполняет следующие действия:
    • Выводит название строки.
    • Итерируется по всем элементам матрицы a[i,j], начиная с индекса i и до тех пор, пока значение k равно 0.
    • Если текущий элемент меньше 0, то выводится его значение и значение k устанавливается в 1.
    • После окончания цикла выводится символ новой строки.
  7. Определяются две переменные a и b типа mtr.
  8. Выполняется инициализация матрицы a с помощью процедуры matrix и символа 'A'.
  9. Вычисляется значение переменной ka с помощью функции kol_zero и выводится на экран.
  10. Выполняется инициализация матрицы b с помощью процедуры matrix и символа 'B'.
  11. Вычисляется значение переменной kb с помощью функции kol_zero и выводится на экран.
  12. Сравниваются значения переменных ka и kb.
  13. Если значение переменной ka больше значения переменной kb, то выполняется процедура per_otr для матрицы a.
  14. Если значение переменной ka меньше значения переменной kb, то выполняется процедура per_otr для матрицы b.
  15. Если значение переменной ka равно значению переменной kb, то выводится сообщение о том, что в обеих матрицах одинаковое количество нулей в четных столбцах и нечетных строках.
  16. Выполняется вывод строки с помощью функции readln для завершения программы.

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


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

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

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