Индекс находится вне границ массива - PascalABC.NET (25120)

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

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

Не могу понять, где идёт числовое переполнение.
Листинг программы
  1. uses
  2. crt;
  3. type
  4. mass = array [1..10000]of integer;
  5. var
  6. a: mass;
  7. n, i: integer;
  8. procedure MPV(var a: mass);
  9. var
  10. i, j, k, x, pr, sr: integer;
  11. begin
  12. pr := 0; {присваивания*}
  13. sr := 0; {сравнения*}
  14. j := i;
  15. for i := 2 to n do
  16. begin
  17. x := a[i];
  18. j := i - 1;
  19. inc(pr);
  20. inc(sr);
  21. while ((x < a[j]) and (j >= 1)) do
  22. begin
  23. a[j + 1] := a[j];
  24. j := j - 1;
  25. inc(sr);
  26. end;
  27. a[j + 1] := x;
  28. inc(pr);
  29. end;
  30. writeln('Отсортированный массив:');
  31. for i := 1 to n do
  32. write(a[i], ' ');
  33. writeln;
  34. writeln;
  35. writeln('Количество присваиваний=', pr);
  36. writeln('количество сравнений=', sr);
  37. end;
  38. begin
  39. clrscr;
  40. randomize;
  41. write('n=');
  42. readln(n);
  43. writeln('Исходный массив:');
  44. for i := 1 to n do
  45. begin
  46. a[i] := random(51);
  47. write(a[i], ' ');
  48. end;
  49. writeln;
  50. writeln;
  51. MPV(a);
  52. readln;
  53. end.

Решение задачи: «Индекс находится вне границ массива»

textual
Листинг программы
  1.     while ((j >= 1) and (x < a[j])) do

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


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

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

14   голосов , оценка 3.643 из 5

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

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

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