Арифметический тренажер. exitcode = 201 - Free Pascal

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

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

Постановка задачи:

нужно создать арифметический тренажер, который бы после выбора учителем параметров разрядности операций (*, 1*, 1**) и действия с числами (= - * /) генерировал бы случайные задачи в заданном диапазоне, например на умножение двузначных чисел или на сложение однозначных, потом в сгенерированном примере прога должна закрывать одно число знаком вопроса, ученик должен ввести число, которое там должно быть. Также программа ведет статистику ошибок и верных ответов. Также необходимо реализовать меню. Вот сам код:
Листинг программы
  1. PROGRAM ArTrening;
  2. uses Crt;
  3. const
  4. NORM=$17;
  5. SEL=$70;
  6. N=3;
  7. NN=4;
  8. var menu:array[1..N] of string[12];{ названия пунктов меню }
  9. menu2:array[1..NN] of string[12];
  10. punkt:integer; { номер выделенного пункта }
  11. ch:char; { введенный символ }
  12. x,y:integer; { координаты первой строки меню }
  13. a,b,c,i,j,k,n2,m,v,mist:Integer;
  14.  
  15. PROCEDURE Main(a,b,c,v,m:Integer; var mist:Integer);
  16. VAR ch:Char; ans,pans:Integer;
  17. Begin
  18. case v of
  19. 1:begin
  20. c:=a+b;
  21. ch:='+';
  22. end;
  23. 2:begin
  24. c:=a-b;
  25. ch:='-';
  26. end;
  27. 3:begin
  28. c:=a*b;
  29. ch:='*';
  30. end;
  31. 4:begin
  32. c:=b;
  33. b:=a;
  34. a:=b*c;
  35. ch:='/';
  36. end;
  37. end;
  38. m:=random(3);
  39. case m of
  40. 1:begin
  41. ans:=a;
  42. Writeln(' ? ',ch,' ',b,' = ',c);
  43. readln (pans); if pans=a then mist:=mist+0 else mist:=mist+1;
  44. end;
  45. 2:begin
  46. ans:=b;
  47. writeln(a,' ',ch,' ? = ',c);
  48. readln (pans); if pans=b then mist:=mist+0 else mist:=mist+1;
  49. end;
  50. 3:begin
  51. ans:=c;
  52. writeln(a,' ',ch,' ',b,' = ?');
  53. readln (pans); if pans=c then mist:=mist+0 else mist:=mist+1;
  54. end;
  55. end;
  56. End;
  57. Procedure MenuToScr;
  58. var i:integer;
  59. begin
  60. ClrScr;
  61. for i:=1 to N do begin
  62. GoToXY(x,y+i-1);
  63. write(menu[i]);
  64. end;
  65. TextAttr:=SEL;
  66. GoToXY(x,y+punkt-1);
  67. write(menu[punkt]);
  68. TextAttr:=NORM;
  69. end;
  70. Procedure MenuToScr2;
  71. var i:integer;
  72. begin
  73. ClrScr;
  74. for i:=1 to NN do begin
  75. GoToXY(x,y+i-1);
  76. write(menu[i]);
  77. end;
  78. TextAttr:=SEL;
  79. GoToXY(x,y+punkt-1);
  80. write(menu[punkt]);
  81. TextAttr:=NORM;
  82. end;
  83. begin
  84. WriteLn('Vvedite kol-vo primerov');
  85. ReadLn(i);
  86. menu[1]:='Edinici';
  87. menu[2]:='Decyatki';
  88. menu[3]:='Sotni';
  89. punkt:=1;
  90. x:=5;
  91. y:=5; TextAttr:=NORM;
  92. MenuToScr;
  93. repeat
  94. ch:=ReadKey;
  95. if ch=char(0) then
  96. begin
  97. ch:=ReadKey;
  98. case ch of
  99. chr(80):{ стрелка вниз }
  100. if punkt<N then
  101. begin
  102. GoToXY(x,y+punkt-1);
  103. write(menu[punkt]);
  104. punkt:=punkt+1;
  105. TextAttr:=SEl;
  106. GoToXY(x,y+punkt-1);
  107. write(menu[punkt]);
  108. TextAttr:=NORM;
  109. end;
  110. chr(72):{ стрелка вверх }
  111. if punkt>1 then
  112. begin
  113. GoToXY(x,y+punkt-1);
  114. write(menu[punkt]);
  115. punkt:=punkt-1;
  116. TextAttr:=SEl;
  117. GoToXY(x,y+punkt-1);
  118. write(menu[punkt]);
  119. TextAttr:=NORM;
  120. end;
  121. end;
  122. end
  123. else
  124. if ch=chr(13) then
  125. begin { нажата клавиша <Enter> }
  126. n2:=punkt;
  127. ClrScr;
  128. menu2[1]:='+';
  129. menu2[2]:='-';
  130. menu2[3]:='/';
  131. menu2[4]:='*';
  132. punkt:=1;
  133. x:=5;
  134. y:=5; TextAttr:=NORM;
  135. MenuToScr2;
  136. repeat
  137. ch:=ReadKey;
  138. if ch=char(0) then
  139. begin
  140. ch:=ReadKey;
  141. case ch of
  142. chr(80):{ стрелка вниз }
  143. if punkt<N then
  144. begin
  145. GoToXY(x,y+punkt-1);
  146. write(menu[punkt]);
  147. punkt:=punkt+1;
  148. TextAttr:=SEl;
  149. GoToXY(x,y+punkt-1);
  150. write(menu[punkt]);
  151. TextAttr:=NORM;
  152. end;
  153. chr(72):{ стрелка вверх }
  154. if punkt>1 then
  155. begin
  156. GoToXY(x,y+punkt-1);
  157. write(menu[punkt]);
  158. punkt:=punkt-1;
  159. TextAttr:=SEl;
  160. GoToXY(x,y+punkt-1);
  161. write(menu[punkt]);
  162. TextAttr:=NORM;
  163. end;
  164. end;
  165. end
  166. else
  167. if ch=chr(13) then
  168. begin
  169. v:=punkt;
  170. ClrScr;
  171. For j:=1 to i do begin
  172. Case n2 of
  173. 1:begin
  174. a:=random(9);
  175. b:=random(9);
  176. end;
  177. 2:begin
  178. a:=random(90)+10;
  179. b:=random(90)+10;
  180. end;
  181. 3:begin
  182. a:=random(900)+100;
  183. b:=random(900)+100;
  184. end;
  185. end;
  186. main(a,b,c,v,m,mist);
  187. end;
  188. WriteLn ('Тест завершен! Правильных ответов: ', (i-mist), ',ошибок: ', mist);
  189. ReadKey;
  190. end;
  191. until ch=chr(27);
  192. end;
  193. until ch=chr(27);
  194. end.
Выскакивает ошибка exited with exitcode = 201. Т.е. программа компилируется, запускается, пользователь вводит кол-во примеров, появляется 1я менюшка и после нажатия Enter выскакивает ошибка соответственно. Не могу понять в чем дело, всю голову сломал.

Решение задачи: «Арифметический тренажер. exitcode = 201»

textual
Листинг программы
  1. var menu:array[1..N] of string[12]; // Запомнил? Индексация - от 1 до ТРЕХ

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


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

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

7   голосов , оценка 3.571 из 5

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

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

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