Reading a question and the correct answer from a data file
Author |
Message |
downisleft
|
Posted: Mon Mar 09, 2009 6:01 pm Post subject: Reading a question and the correct answer from a data file |
|
|
So... a little suck. my problem being i don't understand how to get both a answer and a question from a single .txt file.
The problem is :
Create a history drill program that:
1. Reads a history question and the correct answer from a data file;
2. Presents the question to the user;
3. Uses a subroutine to get the user's answer to the question;
4. Checks the user's answer against the correct answer and provides feedback;
5. Keeps track of the number of correct and incorrect answers;
6. Repeats steps 1 through 5 several times;
7. At the end of the quiz, informs the user of the number of correct and incorrect answers
And my txt file looks like this
code: |
--> Questions <--
1. Canada becomes a country.
2. Transcontinental railway completed.
3. Jacques Cartier arrives in Canada.
4. French and English recognised as official languages.
5. Canada wins the first hockey challenge against the Soviets.
6. The Constitution and Charter of Rights adopted.
7. Oh Canada adopted as the national anthem.
8. The maple leaf becomes the Canadian flag.
9. The Gst is introduced.
10. Newfoundland becomes the last Canadian province.
--> Answers <--
1. 1867
2. 1885
3. 1534
4. 1969
5. 1972
6. 1982
7. 1980
8. 1965
9. 1991
10. 1949
|
--
I have worked with stream before... however, each word goes into a array
code: |
var stream : int
var studentnumber : array 1 .. 19 of int
var studentname : array 1 .. 19 of string
var studentgender : array 1 .. 19 of string
var studentage : array 1 .. 19 of string
var studentm1 : array 1 .. 19 of int
var studentm2 : array 1 .. 19 of int
var studentm3 : array 1 .. 19 of int
var studentm4 : array 1 .. 19 of int
var studentm5 : array 1 .. 19 of int
var c := 0
var m : array 1 .. 19 of int
for i : 1 .. 19
m (i) := 0
end for
open : stream, "h://student.txt", get
for i : 1 .. 19
get : stream, studentnumber (i), studentname (i), studentgender (i), studentage (i), studentm1 (i), studentm2 (i), studentm3 (i), studentm4 (i), studentm5 (i)
end for
|
(Above code used as a example how stream was used before)
My question being, how (if possible) do i get turing to take the whole question? Then compare answers from the 1 txt file im using...
Thanks in advance~ |
|
|
|
|
|
Sponsor Sponsor
|
|
|
Insectoid
|
Posted: Mon Mar 09, 2009 6:19 pm Post subject: RE:Reading a question and the correct answer from a data file |
|
|
get bleh : * will get the whole line. Then just cut off the number from the start. |
|
|
|
|
|
downisleft
|
Posted: Mon Mar 09, 2009 6:50 pm Post subject: Re: Reading a question and the correct answer from a data file |
|
|
a start! but that still does not separate the questions which is what im having problems doing :3|
So
code: |
var stream : int
open : stream, "h://historyset.txt", get
get : stream, *
|
just gets is ALL which isnt nice to play with... maybe i could get it line by line? Would be helpful T___T |
|
|
|
|
|
Insectoid
|
Posted: Mon Mar 09, 2009 8:00 pm Post subject: RE:Reading a question and the correct answer from a data file |
|
|
That should only get 1 line. Try replacing the comma with a colon. I swear that's the syntax (though I have been wrong in the past). |
|
|
|
|
|
saltpro15
|
Posted: Mon Mar 09, 2009 8:02 pm Post subject: RE:Reading a question and the correct answer from a data file |
|
|
insectoid is right, a colon is the correct syntax |
|
|
|
|
|
downisleft
|
Posted: Mon Mar 09, 2009 9:04 pm Post subject: Re: Reading a question and the correct answer from a data file |
|
|
Victory is close! I can feel it
code: |
var line : string
var fileNumber : int
open : fileNumber, "h://history.txt", get
loop
exit when eof (fileNumber)
get : fileNumber, line : *
put line
end loop
|
so it runs, and spits out all the info! So now i would take each line and store it into a array right?
question1
answer1
question2
answer2
nsoforth
Atleast... thats what i think i should do next |
|
|
|
|
|
downisleft
|
Posted: Mon Mar 09, 2009 9:28 pm Post subject: Re: Reading a question and the correct answer from a data file |
|
|
updated txt file~
code: |
Canada becomes a country.
1867
Transcontinental railway completed.
1885
Jacques Cartier arrives in Canada.
1534
French and English recognised as official languages.
1969
Canada wins the first hockey challenge against the Soviets.
1972
The Constitution and Charter of Rights adopted.
1982
Oh Canada adopted as the national anthem.
1980
The maple leaf becomes the Canadian flag.
1965
The Gst is introduced.
1991
Newfoundland becomes the last Canadian province.
1949
|
And then the Program!
code: |
var line : string
var fileNumber : int
var q1, q2, q3, q4, q5, q6, q7, q8, q9, q10 : array 1 .. 20 of string
var a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 : array 1 .. 20 of int
var na1, na2, na3, na4, na5, na6, na7, na8, na9, na10 : int
var c := 0
open : fileNumber, "h://history.txt", get
for i : 1 .. 20
get : fileNumber, q1 (i), a1 (i), q2 (i), a2 (i), q3 (i), a3 (i), q4 (i), a5 (i), q6 (i), a6 (i), q7 (i), a7 (i), q8 (i), a8 (i), q9 (i), a9 (i), q10 (i), a10 (i) : *
end for
put "Time for the first question!"
put q1
get na1
if na1 = a1 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a1
end if
put "Question 2!"
put q2
get na2
if na2 = a2 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a2
end if
put "Question 3!"
put q3
get na3
if na3 = a3 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a3
end if
put "Question 4!"
put q4
get na4
if na4 = a4 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a4
end if
put "Question 5!"
put q5
get na5
if na5 = a5 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a5
end if
put "Question 6!"
put q6
get na6
if na6 = 6 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a6
end if
put "Question 7!"
put q7
get na7
if na7 = a7 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a7
end if
put "Question 8!"
put q8
get na8
if na8 = a8 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a8
end if
put "Question 9!"
put q9
get na9
if na9 = a9 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a9
end if
put "Final Question!"
put q10
get na10
if na10 = a10 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a10
end if
put "You got ", c, " out of 10!"
put "Thanks for playing! Have a nice day!"
|
So im getting a few errors... and im not too sure why... ive looked over it a lot of times... maybe i shouldn't use a array? Even then... it outputs oddly
Help? |
|
|
|
|
|
downisleft
|
Posted: Tue Mar 10, 2009 1:06 pm Post subject: Re: Reading a question and the correct answer from a data file |
|
|
code: |
var line : string
var fileNumber : int
var q1, q2, q3, q4, q5, q6, q7, q8, q9, q10 : string
var answer1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10 : int
var na1, na2, na3, na4, na5, na6, na7, na8, na9, na10 : int
var c := 0
open : fileNumber, "h://history.txt", get
for i : 1 .. 20
get : fileNumber, q1 : *, answer1 : *, q2 : *, answer2 : *, q3 : *, answer3 : *, q4 : *, answer4 : *, q5 : *, answer5 : *, q6 : *, answer6 : *, q7 : *, answer7 : *, q8 : *, answer8 : *, q9 : *,
answer9 : *, q10 : *, answer10 : *
end for
put "Time for the first question!"
put q1
get na1
if na1 = answer1 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer1
end if
put "Question 2!"
put q2
get na2
if na2 = answer2 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer2
end if
put "Question 3!"
put q3
get na3
if na3 = answer3 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer3
end if
put "Question 4!"
put q4
get na4
if na4 = answer4 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer4
end if
put "Question 5!"
put q5
get na5
if na5 = answer5 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer5
end if
put "Question 6!"
put q6
get na6
if na6 = answer6 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer6
end if
put "Question 7!"
put q7
get na7
if na7 = answer7 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer7
end if
put "Question 8!"
put q8
get na8
if na8 = answer8 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer8
end if
put "Question 9!"
put q9
get na9
if na9 = answer9 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer9
end if
put "Final Question!"
put q10
get na10
if na10 = answer10 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", answer10
end if
put "You got ", c, " out of 10!"
put "Thanks for playing! Have a nice day!"
|
It just doesn't like me i guess... only 1 error now...
ERROR : 'get' width applies only to strings and char(n)
I... don't understand? Google failed to help me here |
|
|
|
|
|
Sponsor Sponsor
|
|
|
DemonWasp
|
Posted: Tue Mar 10, 2009 1:34 pm Post subject: RE:Reading a question and the correct answer from a data file |
|
|
You're using:
Turing: | get : stream, variable : * |
with the :* part in order to get an entire line, so that you can include spaces into the questions.
However, integers can't reasonably have spaces in them. If there are numbers separated by a space: 1234 5678 , then that's two separate numbers. So, you should be using:
Turing: | get : stream, integerVariable |
For future reference, CompSci.ca supports a nonstandard BBCode tag: you can add syntax highlighting by using [ syntax = "Turing" ] [ / syntax ] around your code instead of [ code ] tags (all minus the spaces, of course). |
|
|
|
|
|
downisleft
|
Posted: Tue Mar 10, 2009 3:10 pm Post subject: Re: Reading a question and the correct answer from a data file |
|
|
^___________________________^!!!! This is why i love programming, that sweet feeling of perfecting something!!
Turing: |
put "Time for the first question!"
put " "
get : fileNumber, q1 : *
get : fileNumber, a1 : *
put q1
get na1
if na1 = a1 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a1
end if
delay (1000)
cls
put "Question 2!"
put " "
get : fileNumber, q2 : *
get : fileNumber, a2 : *
put q2
get na2
if na2 = a2 then
put "Correct!!"
c := c + 1
else
put "Im sorry, the correct answer was ", a2
end if
|
It works if you get them at each line... ^____^ And if the var are strings
Thanks to everyone who helped
Special thanks to DemonWasp, picking out the strings thing, how to get properly |
|
|
|
|
|
|
|