Арифметический тренажер. exitcode = 201 - Free Pascal
Формулировка задачи:
Постановка задачи:
нужно создать арифметический тренажер, который бы после выбора учителем параметров разрядности операций (*, 1*, 1**) и действия с числами (= - * /) генерировал бы случайные задачи в заданном диапазоне, например на умножение двузначных чисел или на сложение однозначных, потом в сгенерированном примере прога должна закрывать одно число знаком вопроса, ученик должен ввести число, которое там должно быть. Также программа ведет статистику ошибок и верных ответов. Также необходимо реализовать меню. Вот сам код:
Листинг программы
- PROGRAM ArTrening;
- uses Crt;
- const
- NORM=$17;
- SEL=$70;
- N=3;
- NN=4;
- var menu:array[1..N] of string[12];{ названия пунктов меню }
- menu2:array[1..NN] of string[12];
- punkt:integer; { номер выделенного пункта }
- ch:char; { введенный символ }
- x,y:integer; { координаты первой строки меню }
- a,b,c,i,j,k,n2,m,v,mist:Integer;
- PROCEDURE Main(a,b,c,v,m:Integer; var mist:Integer);
- VAR ch:Char; ans,pans:Integer;
- Begin
- case v of
- 1:begin
- c:=a+b;
- ch:='+';
- end;
- 2:begin
- c:=a-b;
- ch:='-';
- end;
- 3:begin
- c:=a*b;
- ch:='*';
- end;
- 4:begin
- c:=b;
- b:=a;
- a:=b*c;
- ch:='/';
- end;
- end;
- m:=random(3);
- case m of
- 1:begin
- ans:=a;
- Writeln(' ? ',ch,' ',b,' = ',c);
- readln (pans); if pans=a then mist:=mist+0 else mist:=mist+1;
- end;
- 2:begin
- ans:=b;
- writeln(a,' ',ch,' ? = ',c);
- readln (pans); if pans=b then mist:=mist+0 else mist:=mist+1;
- end;
- 3:begin
- ans:=c;
- writeln(a,' ',ch,' ',b,' = ?');
- readln (pans); if pans=c then mist:=mist+0 else mist:=mist+1;
- end;
- end;
- End;
- Procedure MenuToScr;
- var i:integer;
- begin
- ClrScr;
- for i:=1 to N do begin
- GoToXY(x,y+i-1);
- write(menu[i]);
- end;
- TextAttr:=SEL;
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- TextAttr:=NORM;
- end;
- Procedure MenuToScr2;
- var i:integer;
- begin
- ClrScr;
- for i:=1 to NN do begin
- GoToXY(x,y+i-1);
- write(menu[i]);
- end;
- TextAttr:=SEL;
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- TextAttr:=NORM;
- end;
- begin
- WriteLn('Vvedite kol-vo primerov');
- ReadLn(i);
- menu[1]:='Edinici';
- menu[2]:='Decyatki';
- menu[3]:='Sotni';
- punkt:=1;
- x:=5;
- y:=5; TextAttr:=NORM;
- MenuToScr;
- repeat
- ch:=ReadKey;
- if ch=char(0) then
- begin
- ch:=ReadKey;
- case ch of
- chr(80):{ стрелка вниз }
- if punkt<N then
- begin
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- punkt:=punkt+1;
- TextAttr:=SEl;
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- TextAttr:=NORM;
- end;
- chr(72):{ стрелка вверх }
- if punkt>1 then
- begin
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- punkt:=punkt-1;
- TextAttr:=SEl;
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- TextAttr:=NORM;
- end;
- end;
- end
- else
- if ch=chr(13) then
- begin { нажата клавиша <Enter> }
- n2:=punkt;
- ClrScr;
- menu2[1]:='+';
- menu2[2]:='-';
- menu2[3]:='/';
- menu2[4]:='*';
- punkt:=1;
- x:=5;
- y:=5; TextAttr:=NORM;
- MenuToScr2;
- repeat
- ch:=ReadKey;
- if ch=char(0) then
- begin
- ch:=ReadKey;
- case ch of
- chr(80):{ стрелка вниз }
- if punkt<N then
- begin
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- punkt:=punkt+1;
- TextAttr:=SEl;
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- TextAttr:=NORM;
- end;
- chr(72):{ стрелка вверх }
- if punkt>1 then
- begin
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- punkt:=punkt-1;
- TextAttr:=SEl;
- GoToXY(x,y+punkt-1);
- write(menu[punkt]);
- TextAttr:=NORM;
- end;
- end;
- end
- else
- if ch=chr(13) then
- begin
- v:=punkt;
- ClrScr;
- For j:=1 to i do begin
- Case n2 of
- 1:begin
- a:=random(9);
- b:=random(9);
- end;
- 2:begin
- a:=random(90)+10;
- b:=random(90)+10;
- end;
- 3:begin
- a:=random(900)+100;
- b:=random(900)+100;
- end;
- end;
- main(a,b,c,v,m,mist);
- end;
- WriteLn ('Тест завершен! Правильных ответов: ', (i-mist), ',ошибок: ', mist);
- ReadKey;
- end;
- until ch=chr(27);
- end;
- until ch=chr(27);
- end.
Решение задачи: «Арифметический тренажер. exitcode = 201»
textual
Листинг программы
- var menu:array[1..N] of string[12]; // Запомнил? Индексация - от 1 до ТРЕХ
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д