Найти сумму элментов в тех строках матрицы, которые содержат хотя бы один отрицательный элемент - Pascal

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

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

Для заданной матрицы размером 8*8 найти такое к, что к-я строка матрицы совпадает с к-м столбцом(оформить в виде процедуры). Найти сумму элментов в тех строках, которые содержат хотя бы один отрицательный элемент(оформить в виде функции).

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

textual
Листинг программы
uses crt;
const n=8;{размер матрицы, при тестировании можно взять меньше, а то долго вводить}
type matr=array[1..n,1..n] of integer;{тип матрицы целый}
procedure Sovp(mt:matr;var k:byte);{процедура, выходной параметр номер строки}
var i,j,p:byte;
begin
k:=0;{пока нет такой строки}
i:=1;{начнем с первой}
while (i<=n)and(k=0) do{пока не последняя строка и нет совпадающей}
 begin
  p:=0;{количество совпадений в строке}
  for j:=1 to n do{идем по строке}
  if mt[i,j]=mt[j,i] then p:=p+1;{если совпадают элемент строки и столбца, считаем}
  if p=n then k:=i{если совпали все, это наша строка}
  else i:=i+1;{иначе смотрим следующую}
 end;
if k=0 then writeln('Совпадающих строк и столбцов нет')
else writeln('Совпадают строка и столбец ',k);
end;
function Summa(mt:matr):integer;{функция}
var i,j,p:byte;
    s:integer;
begin
s:=0;{сумма пока ноль}
for i:=1 to n do{смотрим все строки}
 begin
  p:=0;{пока отрицательных нет}
  j:=1;{начало строки}
  while(p=0)and(j<=n) do{пока не отрицательный и не конец строки}
  if mt[i,j]<0 then p:=1{если попался отрицательный, фиксируем}
  else j:=j+1;{иначе идем по строке дальше}
  if p=1 then{если есть отрицательный}
  for j:=1 to n do{всю строку}
  s:=s+mt[i,j];{добавляем к сумме}
 end;
Summa:=s;{присваиваем это значение функции}
end;
var a:matr;
    i,j,k:byte;
begin
clrscr;
writeln('Введите ',n*n,' элементов матрицы:');
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:5);
  writeln;
 end;
writeln;
Sovp(a,k);
Write('Сумма в строках с отрицательными элементами=',Summa(a));
readln
end.

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

  1. Создается переменная n, которая представляет размер матрицы. В данном случае размер матрицы задан как 8, но при тестировании его можно уменьшить.
  2. Создается тип matr, который представляет матрицу целых чисел.
  3. Создается процедура Sovp, которая принимает матрицу и переменную k в качестве параметров. Внутри процедуры используется цикл while, который выполняется до тех пор, пока не будет найдена строка, содержащая хотя бы один отрицательный элемент. Внутри цикла проверяется каждая строка матрицы. Если строка содержит совпадение (элементы равны), то переменная p увеличивается на единицу. Если все строки проверены и не найдено совпадений, то выводится сообщение о том, что совпадающих строк и столбцов нет. Если найдено совпадение, то выводится сообщение о том, что совпадают строка и столбец определенного индекса.
  4. Создается функция Summa, которая принимает матрицу в качестве параметра и возвращает сумму элементов строк, содержащих хотя бы один отрицательный элемент. Внутри функции используется цикл for, который проверяет каждую строку матрицы. Если строка содержит отрицательный элемент, то его значение добавляется к сумме.
  5. Создается переменная a, которая представляет матрицу.
  6. Выводится приглашение для ввода значений матрицы. Для этого используется цикл for, который проверяет каждый элемент матрицы.
  7. Выводится матрица, представляющая введенные значения. Для этого используется еще один цикл for, который проверяет каждый элемент матрицы.
  8. Вызывается процедура Sovp с переменной k в качестве параметра. Переменная k инициализируется нулем.
  9. Выводится сообщение о том, что сумма элементов строк с отрицательными элементами равна определенному значению, которое возвращает функция Summa.

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


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

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

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