В матрице выявить все квадратные подматрицы, в которых число положительных и отрицательных элементов равно - Pascal ABC

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

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

Здравствуйте!Нужна ваша помощь:"В прямоугольной матрице выявить все квадратные подматрицы,в которых колл-во положительных и отрицательных элементов равно.".Надеюсь на помощь,заранее спасибо!

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

textual
Листинг программы
  1. const max=10;
  2. var a:array[1..max,1..max] of real;
  3.     m,n,d,i,j,ii,jj,iii,jjj,kp,ko,q:byte;
  4. begin
  5. randomize;
  6. repeat
  7. write('Количество строк от 2 до ',max,' m=');
  8. readln(m);
  9. until m in [2..max];
  10. repeat
  11. write('Количество столбцов от 2 до ',max,' n=');
  12. readln(n);
  13. until n in [2..max];
  14. if m<n then d:=m else d:=n;//максимальный размер квадратов
  15. writeln('Матрица');
  16. for i:=1 to m do
  17.  begin
  18.   for j:=1 to n do
  19.    begin
  20.     a[i,j]:=-5+10*random;
  21.     write(a[i,j]:6:2);
  22.    end;
  23.   writeln;
  24.  end;
  25. q:=0;
  26. for i:=1 to m-1 do
  27. for j:=1 to n-1 do
  28. for ii:=i+1 to m do
  29. for jj:=j+1 to n do
  30. if (ii-i in [1..d])and(ii-i=jj-j) then
  31.  begin
  32.   kp:=0;
  33.   ko:=0;
  34.   for iii:=i to ii do
  35.   for jjj:=j to jj do
  36.   if a[iii,jjj]>0 then inc(kp)
  37.   else if a[iii,jjj]<0 then inc(ko);
  38.   if kp=ko then
  39.    begin
  40.     q:=1;
  41.     writeln('Подматрица [',i,',',j,']-[',ii,',',jj,']');
  42.    end;
  43.  end;
  44. if q=0 then writeln('Подматриц по условию нет');
  45. end.

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

  1. Создается константа max со значением 10.
  2. Создается переменная a типа array[1..max,1..max] of real.
  3. Создаются переменные m, n, d, i, j, ii, jj, iii, jjj, kp, ko, q типа byte.
  4. Используется функция randomize для инициализации генератора случайных чисел.
  5. Выполняется цикл repeat, в котором считываются значения m и n с помощью функции readln.
  6. Проверяется, что m больше или равно n. Если это условие не выполняется, то переменной d присваивается значение m, иначе - n.
  7. Выводится строка Матрица.
  8. Выполняется цикл for i от 1 до m.
  9. Внутри цикла выполняется цикл for j от 1 до n.
  10. Внутри циклов вычисляются значения a[i,j] и выводятся они на экран с помощью функции write.
  11. Выводится символ writeln для перехода на новую строку.
  12. Переменная q инициализируется значением 0.
  13. Выполняется цикл for i от 1 до m-1.
  14. Внутри цикла выполняется цикл for j от 1 до n-1.
  15. Внутри циклов выполняется цикл for ii от i+1 до m.
  16. Внутри циклов выполняется цикл for jj от j+1 до n.
  17. Проверяется условие (ii-i в [1..d]) и (ii-i=jj-j).
  18. Если условие выполняется, то переменные kp и ko инициализируются значением 0.
  19. Если a[iii,jjj]>0, то значение kp увеличивается.
  20. Если a[iii,jjj]<0, то значение ko увеличивается.
  21. Если kp равно ko, то переменная q инициализируется значением 1.
  22. Выводится строка Подматрица [,i,',',j,']-[',ii,',',jj,']`.
  23. Если значение q равно 0, то выводится строка Подматриц по условию нет.
  24. Конец программы.

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы