Найти в каждой строке матрицы первый отрицательный элемент - 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.
Объяснение кода листинга программы
- В начале кода подключается библиотека crt, которая обеспечивает функции для работы с потоками ввода-вывода.
- Затем определяется константа n, которая определяет размерность матрицы (в данном случае равна 6).
- Определяется тип данных mtr, который представляет собой массив целых чисел размером n x n.
- Создается процедура matrix, которая принимает в качестве параметра переменную a типа mtr и символ c, обозначающий название матрицы. Внутри этой процедуры выводится название матрицы и затем происходит итерация по всем элементам матрицы. Для каждого элемента выполняется следующая последовательность действий:
- присваивается значение a[i,j] и выводится его значение с помощью функции write.
- выводится символ новой строки с помощью функции writeln.
- Определяется функция kol_zero, которая принимает в качестве параметров переменные i и j типа byte и возвращает тип byte. Эта функция выполняет следующие действия:
- инициализирует переменную k значением 0.
- выполняет цикл по всем элементам матрицы a[i,j].
- Если текущий элемент равен 0 и его индексы i и j являются четными числами (определяется с помощью функций odd и not), то увеличивается значение переменной k.
- Возвращается значение k.
- Определяется процедура per_otr, которая принимает в качестве параметров переменные i, j и k типа byte. Эта процедура выполняет следующие действия:
- Выводит название строки.
- Итерируется по всем элементам матрицы a[i,j], начиная с индекса i и до тех пор, пока значение k равно 0.
- Если текущий элемент меньше 0, то выводится его значение и значение k устанавливается в 1.
- После окончания цикла выводится символ новой строки.
- Определяются две переменные a и b типа mtr.
- Выполняется инициализация матрицы a с помощью процедуры matrix и символа 'A'.
- Вычисляется значение переменной ka с помощью функции kol_zero и выводится на экран.
- Выполняется инициализация матрицы b с помощью процедуры matrix и символа 'B'.
- Вычисляется значение переменной kb с помощью функции kol_zero и выводится на экран.
- Сравниваются значения переменных ka и kb.
- Если значение переменной ka больше значения переменной kb, то выполняется процедура per_otr для матрицы a.
- Если значение переменной ka меньше значения переменной kb, то выполняется процедура per_otr для матрицы b.
- Если значение переменной ka равно значению переменной kb, то выводится сообщение о том, что в обеих матрицах одинаковое количество нулей в четных столбцах и нечетных строках.
- Выполняется вывод строки с помощью функции readln для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д