Ошибка в коде, индекс находился вне границ массива - PascalABC.NET

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

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

здравствуйте, помогите, пожалуйста, в решении проблемы в коде. Задание к данной программе:
Спойлер
При запуске данной программы и нажатии кнопки начать выводит ошибку "индекс находился вне границ массива" в 66 строчке.
Листинг программы
  1. Program laba5;
  2. uses GraphABC, events;
  3. const
  4. windowsizex=1000;
  5. windowsizey=660;
  6. cornerx=1;
  7. cornery=1;
  8. statusheight=160;
  9. field=10;
  10. font=10;
  11. noteplacey=30;
  12. resultplacey=85;
  13. placey=140;
  14. placex=940;
  15. statuscolor=clteal;
  16. markcolor=clpurple;
  17. rectanglex1=225;
  18. rectangley1=285;
  19. rectanglex2=775;
  20. rectangley2=545;
  21. colornumber=5;
  22. sizenumber=3;
  23. shapenumber=4;
  24. smalllength=20;
  25. middlelength=40;
  26. biglength=60;
  27. arrayborder=100;
  28. type
  29. figure=record
  30. x,y,color,shape,size:integer;
  31. end;
  32. var
  33. mas:array[1..arrayborder] of figure;
  34. i,number,borderx,bordery:integer;
  35. result:string;
  36. procedure main;
  37. begin
  38. rectangle(cornerx,cornery,windowsizex,statusheight);
  39. setbrushcolor(statuscolor);
  40. fillrect(cornerx,cornery,windowsizex,statusheight);
  41. setfontsize(font);
  42. setfontcolor(clblack);
  43. setfontstyle(fsBold);
  44. textout(field,field,'Добро пожаловать в программу вычисления количества красных фигур внутри прямоугольника!');
  45. textout(field,noteplacey,'Нажмите "Начать" для запуска программы или "Выход" для завершения работы.');
  46. textout(field,resultplacey,'Фигур внутри прямоугольника: ');
  47. textout(field,placey,'Начать');
  48. textout(placex,placey,'Выход');
  49. setbrushstyle(bsclear);
  50. setpencolor(clblack);
  51. rectangle(rectanglex1,rectangley1,rectanglex2,rectangley2);
  52. end;
  53. procedure pen;
  54. begin
  55. case mas[i].color of
  56. 0: setpencolor(clred);
  57. 1: setpencolor(clgreen);
  58. 2: setpencolor(clblue);
  59. 3: setpencolor(clyellow);
  60. 4: setpencolor(clgray);
  61. end;
  62. end;
  63. procedure drawcross(x1,y1,size1,pen1:integer);
  64. begin
  65. pen;
  66. line(x1-size1,y1,x1+size1,y1);
  67. line(x1,y1-size1,x1,y1+size1);
  68. end;
  69. procedure drawskewcross(x1,y1,size1,pen1:integer);
  70. var
  71. n:integer;
  72. begin
  73. n:=trunc(size1*0.7);
  74. pen;
  75. line(x1-n,y1-n,x1+n,y1+n);
  76. line(x1-n,y1+n,x1+n,y1-n);
  77. end;
  78. procedure drawcircle(x1,y1,size1,pen1:integer);
  79. begin
  80. pen;
  81. setbrushstyle(bsclear);
  82. circle(x1,y1,size1);
  83. end;
  84. procedure drawstar(x1,y1,size1,pen1:integer);
  85. var
  86. n:integer;
  87. begin
  88. n:=trunc(size1*0.7);
  89. pen;
  90. line(x1-n,y1-n,x1+n,y1+n);
  91. line(x1-n,y1+n,x1+n,y1-n);
  92. line(x1-size1,y1,x1+size1,y1);
  93. line(x1,y1-size1,x1,y1+size1);
  94. end;
  95. procedure press(mousex,mousey,mmousey:integer);
  96. var i:integer;
  97. begin
  98. if (mousex>=placex)and(mousex<=placex+45) and (mousey>=placey)and(mousey<=placey+font+5) then
  99. begin
  100. setbrushcolor(markcolor);
  101. textout(placex,placey,'Выход');
  102. closewindow;
  103. end
  104. else if (mousex>=field)and(mousex<=field+55) and (mousey>=placey)and(mousey<=placey+font+5) then
  105. begin
  106. ClearWindow;
  107. main;
  108. setbrushcolor(markcolor);
  109. textout(field,placey,'Начать');
  110. number:=0;
  111. for i := 1 to arrayborder do
  112. with mas[i] do
  113. begin
  114. size:=random(sizenumber);
  115. case size of
  116. 0: size:=smalllength;
  117. 1: size:=middlelength;
  118. 2: size:=biglength;
  119. end;
  120. borderx:=windowsizex-2*size;
  121. x:=random(borderx)+size;
  122. bordery:=windowsizey-2*size-statusheight;
  123. y:=random(bordery)+statusheight+size;
  124. color:=random(colornumber);
  125. shape:=random(shapenumber);
  126. end;
  127. for i:=1 to arrayborder do
  128. begin
  129. with mas[i] do
  130. begin
  131. case shape of
  132. 0: drawcross(x,y,size,color);
  133. 1: drawskewcross(x,y,size,color);
  134. 2: drawcircle(x,y,size,color);
  135. 3: drawstar(x,y,size,color);
  136. end;
  137. if (pencolor=clred)and(x-size>rectanglex1)and(x+size<rectanglex2) and (y-size>rectangley1)and(y+size<rectangley2) then number:=number+1;
  138. end;
  139. str(number,result);
  140. setbrushcolor(statuscolor);
  141. textout(field+235,resultplacey,result);
  142. end;
  143. end;
  144. end;
  145. begin
  146. setwindowsize(windowsizex,windowsizey);
  147. ClearWindow;
  148. centerwindow;
  149. main;
  150. onmousedown:=press;
  151. end.
Конкретнее вот кусок программы
Листинг программы
  1. procedure pen;
  2. begin
  3. case mas[i].color of
  4. 0: setpencolor(clred);
  5. 1: setpencolor(clgreen);
  6. 2: setpencolor(clblue);
  7. 3: setpencolor(clyellow);
  8. 4: setpencolor(clgray);
  9. end;
  10. end;

Решение задачи: «Ошибка в коде, индекс находился вне границ массива»

textual
Листинг программы
  1. i : i + 1

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


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

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

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

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

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

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