В квадратной матрице найти произведение элементов, лежащих выше побочной диагонали - ошибка в коде - Pascal

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

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

В квадратной матрице найти произведение элементов, лежащих выше побочной диагонали.
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils, Windows;
var m,n: integer;
    i,j,l: integer;
    p:longint;
    a:array of array of integer;
{$R-}
label 1,2,3;
procedure MyWriteln(const S: string);
var
  NewStr: string;
begin
  SetLength(NewStr, Length(S));
  CharToOem(PChar(S), PChar(NewStr));
  Writeln(NewStr);
end;
 
Begin
MyWriteln('ГЊГ*ГІГЁГ¶Г* äîëæГ*Г* áûòü ГЄГўГ*äðГ*ГІГ*îé!');
3:MyWriteln('Ââåäèòå ÷èñëî ñòðîê: ');
1:ReadLn(m);
 if m <= 0
 Then
 Begin
 MyWriteln('Ââåäèòå ÷èñëî áîëüøå 0!');
 goto 1;
 End
 Else
  MyWriteln('Ââåäèòå ÷èñëî ñòîëáöîâ: ');
2:  ReadLn(n);
  if n <= 0
  Then
  Begin
  MyWriteln('Ââåäèòå ÷èñëî áîëüøå 0!');
  goto 2;
  End;
if not(m = n)
Then
Begin
MyWriteln('ГЊГ*òðèöГ* Г*ГҐ ÿâëÿåòñÿ ГЄГўГ*äðГ*ГІГ*îé!');
goto 3;
End;
GetMem(a, m * sizeof(integer));
  for i:= 0 to m-1 do
    for j:= 0 to n-1 do
      GetMem(a[i], n * sizeof(integer));
  for i:= 0 to m-1 do
    for j:= 0 to n-1 do
      a[i,j]:=1+Random(9);
  for i:= 0 to m-1 do
  begin
    for j:= 0 to n-1 do
      Write(a[i,j]:4);
    WriteLn;
  end;
 
  l:=0;
  p:=1;
 
  for j:=1 to m do // Выбрасывает ошибку здесь
   begin
    for i:=1 to n-l do
    Begin
    p:=p*a[i,j];
    End;
    inc(l);
   end;
  MyWriteln('ÏðîèçâåäåГ*ГЁГҐ ýëåìåГ*òîâ âûøå ïîáî÷Г*îé äèГ*ГЈГ®Г*Г*ëè: ');
   Write(p);
  ReadLn;
  Writeln(' ');
   for i:= 0 to n-1 do
    FreeMem(a[i]);
  FreeMem(a);
  ReadLn;
End.

Решение задачи: «В квадратной матрице найти произведение элементов, лежащих выше побочной диагонали - ошибка в коде»

textual
Листинг программы
p:=1;
for i:=0 to n-2 do
for j:=0 to n-i-2 do
p:=p*a[i,j];

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

  1. Переменная p инициализируется значением 1.
  2. Запускается цикл for, который выполняется n-2 раза (где n - размерность квадратной матрицы).
  3. Внутри первого цикла for запускается второй цикл for, который выполняется n-i-2 раз (где i - номер текущей итерации первого цикла).
  4. В каждой итерации внутреннего цикла for значение переменной p умножается на значение элемента матрицы a[i,j].
  5. По завершении второго цикла for значение переменной p будет содержать произведение всех элементов, лежащих выше побочной диагонали.

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


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

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

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