Ik heb een programma geschreven dat voor mezelf gebruikt gaat worden als een oefentoets programma. Dit programma leest een .txt bestand in en vraagt dan de vragen.
De structuur van zo'n bestand gaat zo:
Enzovoorts.
Nu gebeurt dit allemaal wel correct, maar zodra de laatste vraag is gesteld en beantwoord, gebeurt er niks meer. Dan hangt 'ie in een soort van infinite loop. Dan gebeurt er niks tenzij je weer input geeft, en dat vergelijkt hij met de laatste vraag die gesteld is en dan pas wordt er code gedraait die na de while loop komt. Hier is mijn code:
De structuur van zo'n bestand gaat zo:
code:
1
2
| vraag|antwoord vraag2|antwoord |
Enzovoorts.
Nu gebeurt dit allemaal wel correct, maar zodra de laatste vraag is gesteld en beantwoord, gebeurt er niks meer. Dan hangt 'ie in een soort van infinite loop. Dan gebeurt er niks tenzij je weer input geeft, en dat vergelijkt hij met de laatste vraag die gesteld is en dan pas wordt er code gedraait die na de while loop komt. Hier is mijn code:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| #include <iostream> #include <fstream> #include <string> using namespace std; int main() { string toets; cout << "Welkom bij ZelfToets++!" << endl; cout << "Typ de bestandsnaam van de toets die je wil maken, bijv. toets.txt\n" << endl; cin >> toets; string vraag, antwoord, input; int vg = 0; int v = 0; float cijfer; ifstream toetsbestand(toets.c_str()); if (toetsbestand.is_open()) { while (! toetsbestand.eof() ) { getline (toetsbestand,vraag,'|'); getline (toetsbestand,antwoord); cout << "\n" << vraag << endl; cout << "\n"; cin >> input; if (input == antwoord) { cout << "\nCorrect! Je je antwoord was goed. Het was inderdaad " << antwoord << "!" << endl; vg++; } else { cout << "\nSorry, je had het niet goed. Het goede antwoord was " << antwoord << "." << endl; } v++; } toetsbestand.close(); cout << "Ok, we zijn klaar!" << endl; cout << "Je had " << vg << " van de " << v << " vragen goed." << endl; } else { cerr << "Deze toets bestaat niet, of het bestand is al in gebruik!"; } getchar(); return 0; } |