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

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

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

Помогите пожалуйста решить задачку в Паскале. Напишите плиз прогу. Буду очень благодарен! Дана целочисленная прямоугольная матрица. Определить: 1. Сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент. 2. Номера строк и столбцов всех седловых точек матрицы. Матрица А имеет седловую точку Аij, если Аij является минимальным элементом в i-ой строке и максимальным в j-ом столбце.

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

textual
Листинг программы
uses
  crt;
const
  n=3;{ïîðÿäîê Г¬Г*òðèöû}
type
  MyArr=array[1..n,1..n]of integer;
var
  a:MyArr;
procedure Sed(var a:MyArr);
var
  i,j,k,tempi,tempj,max,min,countsed:integer;
  fl:boolean;
begin
  clrscr;
  {Г§Г*ïîëГ*ГїГҐГ¬ Г¬Г*òðèöó}
  writeln('ÈñõîäГ*Г*Гї Г¬Г*òðèöГ*:');
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      a[i,j]:=random(8)-4;
      write(a[i,j]:2,' ')
    end;
    writeln
  end;
  writeln('ÐåçóëüòГ*ГІГ»:');
  {îòûñêèâГ*ГҐГ¬ ñåäëîâûå òî÷êè}
  countsed:=0;
  for i:=1 to n do
  begin
    min:=a[i,1];
    tempi:=1;
    tempj:=1;
    for j:=2 to n do
      if a[i,j]<min then
      begin
        min:=a[i,j];
        tempi:=i;
        tempj:=j
      end;
    k:=1;
    fl:=true;
    repeat
      if a[k,tempj]>min then
        fl:=false;
      inc(k)
    until
      (k>n) or (fl=false);
    if fl then
    begin
      textcolor(2);
      writeln('ÝëåìåГ*ГІ a[',tempi,',',tempj,'] ÿâëÿåòñÿ ñåäëîâîé òî÷êîé');
      inc(countsed)
    end;
  end;
  if countsed=0 then
  begin
    textcolor(4);
    writeln('Г‚ Г§Г*Г¤Г*Г*Г*îé Г¬Г*òðèöå ñåäëîâûõ òî÷åê Г*ГҐГІ...');
  end
end;
{îñГ*îâГ*Г*Гї ïðîãðГ*ììГ*}
begin
  Sed(a)
end.

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

  1. Объявлены переменные: n, MyArr, a, i, j, k, tempi, tempj, max, min, countsed, fl.
  2. Задано значение переменной n равное 3.
  3. Объявлен тип массива MyArr как array[1..n,1..n] of integer.
  4. Объявлена переменная a типа MyArr.
  5. Объявлена процедура Sed с параметром var a:MyArr.
  6. В первой итерации внешнего цикла выводится строка из матрицы a размером n на n.
  7. Во второй итерации внутреннего цикла устанавливается значение элемента матрицы a на случайное число от -4 до 4.
  8. В процедуре Sed инициализируются переменные countsed и fl значением 0.
  9. В первой итерации внутреннего цикла ищется минимальное значение в строке.
  10. Во второй итерации внутреннего цикла проверяется значение элемента матрицы a. Если оно меньше минимального значения, то оно становится новым минимальным значением, а i и j обновляются.
  11. В третьей итерации внутреннего цикла значение k устанавливается равным 1, а fl устанавливается равным true.
  12. В цикле while проверяется значение fl. Если оно равно true, то выводится сообщение с указанием номера строки и столбца элемента матрицы a со значением min.
  13. Если значение countsed равно 0, то выводится сообщение Г‚ Г§Г*Г¤Г*Г*Г*îé Г¬Г*òðèöå ñåäëîâûõ òî÷åê Г*ГҐГІ....
  14. В конце подпрограммы вызывается процедура Sed с передачей переменной a в качестве аргумента.
  15. В конце программы вызывается процедура Sed.

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


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

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

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