Матрицы любимицы - Pascal

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

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

Вот написал код к этой задаче Дана вещественная матрица A из N строк и столбов (N<=20 вводиться) Найти номер первой строки матрицы ,все элементы которой упорядочены по возрастанию.Если такая строка есть ,то найти и вывести максимальный элемент матрицы, в противном случае найти колво отрицательныйх элементов до первого нулевого элемента на побочной диагонали. Но он не работает помогите пожалуйста исправить/переделать код.

Решение задачи: «Матрицы любимицы»

textual
Листинг программы
Uses crt;
var
A:array [1..20,1..20] of real;
n,i,j,kol,fl,fl1,nomer,imx,jmx:integer;
max:real;
begin
clrscr;
repeat
writeln('Vvedite razmernostb matrici N ne bolshe 20');
readln(n);
If not(n in [1..20]) then writeln('Nevernyj vvod! Povtorite.');
until n in [1..20];
writeln('Vvedite ',n*n,' elementov matricy:');
For i:=1 to n do
for j:=1 to n do
  begin
  write('A[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Matrica:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4:1);
  writeln;
 end;
fl:=0;
for i:=1 to n do
 begin
  fl1:=0;
  for j:=2 to n do
  if a[i,j]>a[i,j-1] then fl1:=fl1+1;
  if fl1=n-1 then
   begin
    fl:=1;
    nomer:=i;
    break;
   end;
 end;
if fl=1 then
 begin
  writeln('Takaya stroka estb, ee nomer=',nomer);
  max:=a[1,1];imx:=1;jmx:=1;
  for i:=1 to n do
  for j:=1 to n do
  if a[i,j]>max then
   begin
    max:=a[i,j];
    imx:=i;
    jmx:=j;
   end;
  writeln('Max. el-t a[',imx,',',jmx,']=',max:0:1);
 end
else
 begin
  writeln('Takoj stroki net!');
  for i:=1 to n do
  if a[i,n-i+1]=0 then
   begin
    nomer:=i;
    break;
   end;
  kol:=0;
  for i:=1 to nomer do
  if a[i,n-i+1]<0 then kol:=kol+1;
  writeln('Kol-vo otr. el.=',kol);
 end;
readkey;
end.

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

  1. Объявление переменных:
    • n - номер строки для ввода размера матрицы (от 1 до 20)
    • i, j - индексы для обхода матрицы
    • kol - количество отрицательных элементов главной диагонали матрицы
    • fl - флаг наличия строки с возрастающими элементами
    • fl1 - вспомогательный флаг для проверки элементов главной диагонали
    • nomer - номер строки с возрастающими элементами или номер строки с отрицательными элементами
    • imx, jmx - индексы максимального элемента матрицы
    • max - максимальное значение элемента матрицы
  2. Ввод размера матрицы и заполнение матрицы:
    • Пользователю предлагается ввести размер матрицы (от 1 до 20)
    • Если размер некорректен, программа выводит сообщение об ошибке и просит ввести корректный размер
    • Затем происходит ввод элементов матрицы
  3. Поиск строки с возрастающими элементами и вывод сообщения:
    • Если найдена строка с возрастающими элементами, программа выводит сообщение об этом и выводит номер такой строки
    • В противном случае выводится сообщение о том, что такая строка отсутствует
  4. Поиск отрицательных элементов главной диагонали и вывод сообщения:
    • Если найдены отрицательные элементы главной диагонали, программа выводит количество таких элементов
    • В противном случае выводится сообщение о том, что отрицательных элементов нет
  5. Поиск максимального элемента матрицы и вывод сообщения:
    • Находится максимальное значение элемента матрицы
    • Выводятся индексы этого элемента
    • Выводится сообщение с максимальным значением элемента матрицы
  6. Ввод с клавиатуры и завершение работы программы:
    • Программа ожидает нажатия клавиши для завершения работы

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

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