Массивы в процедурах, выход за пределы массива - PascalABC.NET

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

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

Процедура ищет в двумерном массиве максимальный и минимальный элемент, затем если в строке есть элемент меньше чем их полусумма то записывает в новый массив 0, если нет то 1. Проблема вот в чем, если задать массив в котором число строк больше чем число столбцов, то программа выдает ошибку: Индекс находится вне границ массива (строчка №13). Если задать квадрат или с числом столбом большим чем число строк, то программа выполняется. Почему она так делает?
Листинг программы
  1. program kva;
  2. uses crt;
  3. var
  4. A:array [,] of integer;
  5. P:array of integer;
  6. i,j,n,k:integer;
  7. procedure tru(Q:array [,] of integer; var P:array of integer);
  8. var
  9. i,j,mn,mx:integer;
  10. begin
  11. for i:=0 to high(q) do
  12. for j:=0 to high(q) do begin
  13. if q[i,j]<mn then mn:=q[i,j];
  14. if q[i,j]>mx then mx:=q[i,j];
  15. end;
  16. for i:=0 to high(q) do begin
  17. P[i]:=1;
  18. for j:=0 to high(q) do begin
  19. if (q[i,j]<((mx+mn)/2)) then P[i]:=0;
  20. end;
  21. end;
  22. end;
  23. begin
  24. writeln('vvedite razmer matrici');
  25. readln(n,k);
  26. SetLength(a,n,k);
  27. SetLength(p,n);
  28. for i:=0 to (n-1) do begin
  29. for j:=0 to (k-1) do begin
  30. a[i,j]:=random(100);
  31. write(a[i,j],' ');
  32. end;
  33. writeln;
  34. end;
  35. tru(a,p);
  36. for i:=0 to (n-1) do
  37. write(p[i],' ');
  38. readln;
  39. end.

Решение задачи: «Массивы в процедурах, выход за пределы массива»

textual
Листинг программы
  1. for i:=0 to Pred(Length(q, 0)) do
  2. for j:=0 to Pred(Length(q, 1)) do begin

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


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

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

8   голосов , оценка 3.5 из 5

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

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

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