Hi,
I would need some help to resolve a problem.
I need to create a programm that contain 10 basic math questions.
After 3 fails in a row, the programm must stop. After each question the good answer should show if the student entered the wrong answer, and the result up to now will show.
I hope I explained myself well, english is not my fist language. :-)

So to start, I wrote a programm to ask the first question, then verify the answer, show the result and the good answer if needed. But it was really long and I was only repeating lots of commands.

So I am now trying something else. I would like create a loop, so each question will be asked one by one, the answer would be verified and the result would show.
I created two vector (not sure this is the correct word), one where I assigned the questions and another where I assigned the answer.

PROGRAM travail3q2version2;

{\$APPTYPE CONSOLE}

uses Forms;

TYPE
//this is where the questions will be
tab_qsts= Array [1..10] of string[6];

//this is where the answers will be
tab_rep= Array [1..10] of integer;

CONST
//this is the quantity of questions
qst_max = 10;

VAR
reponse: char;
//will be use later on
cumulb, cumulm, cumulr, consb, consm, interup: integer;
a: tab_qsts;
b: tab_rep;
i,j,r: integer;

BEGIN

//will be use later on
cumulb:=0; cumulm:=0; cumulr:=0; consb:=0; consm:=0;

//here I assign the questions in the first vector
a[1]:='1+1'; a[2]:='1+2'; a[3]:='1+3'; a[4]:='1+4'; a[5]:='1+5';
a[6]:='2+1'; a[7]:='2+2'; a[8]:='2+3'; a[9]:='2+4'; a[10]:='2+5';

//here I assign the answers in the second vector
b[1]:=2; b[2]:=3; b[3]:=4; b[4]:=5; b[5]:=6;
b[6]:=3; b[7]:=4; b[8]:=5; b[9]:=6; b[10]:=7;

For i:= 1 to 10 do
For j:= 1 to 10 do

begin
writeln(a);

if (r)=(b[j]) then
begin
writeln('bravo');
end
end

END.

So, I'm only at the first step of the programm. I was expecting to see the first question, then the student to enter the first answer, if fine then "bravo' would had showed, if not the next question would had showed and so on. Then I was planning to add the other command I need to have the test calculate how many failure in a row and other stuf I need to do. But I cant even get the first part to work properly. The way the programm is now, each questions are asked 10 times, but each time with the following answer. So the first question is asked, then the first answer is expected, after the first question is asked again, and the second answer is expected, and so on.
If I erase the "For j:= 1 to 10 do" command, then each question is asked only once, but the answer is not verified.
Can someone tell me what is wrong?
zourha

3
Contributors
4
Replies
5
Views
8 Years
Discussion Span
Last Post by FlamingClaw

Hi,

I compiled with the following code and it worked:

``````For i:= 1 to 10 do
begin
writeln(a[i]);

if (r)=(b[i]) then
begin
writeln('bravo');
end
end``````

Thanks Lonelul,
you're awesome. This resolved my issue.
Now I will be able to continue.

``````(*my program is one alternative*)
(*
1,
create a program that contain 10 basic math questions.
*)
program main;

uses crt;

(*new types section*)
type questions = record
q:string;{the question}
r:boolean;{if answer is good then set to true,else false}
end;

Aquestion = array[1..10]of questions;{array that contains the ten questions}

(*global variables section*)
var my_array:Aquestion;{one array}
i:byte;{loop variable,counts only}

(*with this function we'll check two strings
if the two strings aren't equal then returns false else true,
cause them equals*)
function Equal(v1,v2:string):boolean;
begin
if v1 <> v2 then Equal:=false
else Equal:=true;
end;

begin (*here begins the main program*)

clrscr;

writeln('Fill the array.');
(*ok,let's fill the array with questions*)
for i:=1 to 10 do begin
writeln('----------');
my_array[i].r:=false;          {later we'll treat it}
end;

(*
2,
after 3 fails in a row,the program must stop
"so we have to listen the value of wrong_answers
and if it reaches 10 or not,if yes then game is over"
"here we can use a repeat..until loop"
*)
clrscr;

i:=0;  {set i to zero}

repeat
inc(i,1);{same as i:=i+1;}
writeln('Question ',i,': ',my_array[i].q); {write the i.question}
my_array[i].r:=Equal(my_array[i].a,user);{call our function to set result}
if my_array[i].r then begin  {if the user's answer good then}
end else begin
end;
clrscr;
{write the final results to the screen...}
clrscr;
write('Results:');
gotoxy(20,1);
gotoxy(40,1);

repeat
until keypressed;

end.{of main}
{created by FlamingClaw 2010}``````

Thanks Lonelul,
you're awesome. This resolved my issue.
Now I will be able to continue.

If someone solved your problem then please mark as solved.Thank you, in the name of the community....