Ik zit echt helemaal vast, heb op internet al allemaal pagina's gelezen over arrays en structures en het staat er allemaal zo 'makkelijk' beschreven, maar toch werkt het bij mij niet... Het gaat om het volgende probleem...
Nu wordt er dus 1x om de gegevens van een autoverkoper gevraagd en die word ook 1x weergegeven. De bedoeling is dat er meerdere verkopers ingevoerd moeten worden... Die gegevens moeten dus in een apart bestand weggeschreven worden. Normaal zou je gewoon een array kunnen gebruiken en dan met een for loop zoveel dingen in kunnen voeren als je zelf wilt. Nu staat bijv. in mijn boek en ook op veel pagina's op het internet dat je door middel van (bijv.) rec[i].merk meerdere keren de structure kunt gebruiken. dus dan krijg je rec[0].merk, rec[1].merk. rec[2].merk etc. als ik dus rec[i] gebruik krijg in een undeclared identifier terwijl ik i toch echt als int i = 0 heb gedeclared (en natuurlijk met een for loop (bijv. for(i = 0; i < aantal; i++) waarbij aantal dan bijv. 3 is) de i steeds laten verhogen. Ik heb ook al geprobeerd om alle recs aan te passen naar rec[0], maar zelfs dat mag al niet.
De vraag is, zo moet het blijkbaar dus niet, maar hoe dan wel? (ben al een behoorlijk lange tijd bezig
) (ik hoef maar een hele kleine hint
)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| #include <fstream> #include <iostream> using namespace std; const char *bestand = "db.dat"; struct Auto { int verknr; char verkadres[60]; char verkwpl[40]; char merk[40]; char kleur[40]; char verknaam[40]; char indherkomst; char type[40]; int bouwjaar; int prijs; int i; }; bool LoadDB(Auto *rec) { ifstream invoer(bestand, ios_base::in | ios_base::binary); if (!invoer.is_open()) return false; invoer.read((char*)rec, sizeof(Auto)); invoer.close(); return true; } bool SaveDB(Auto *rec) { ofstream uitvoer(bestand, ios_base::out | ios_base::binary | ios_base::trunc); if (!uitvoer.is_open()) return false; uitvoer.write((const char*)rec, sizeof(Auto)); uitvoer.close(); return true; } int main() { Auto rec; if (LoadDB(&rec)) { cout << "Het volgende staat in de database...\n"; cout << "Merk = " << rec.merk << endl; cout << "Type = " << rec.type << endl; cout << "Kleur = " << rec.kleur << endl; cout << "Nummer verkoper = " << rec.verknr << endl; cout << "Naam verkoper = " << rec.verknaam << endl; cout << "Adres verkoper = " << rec.verkadres << endl; cout << "Woonplaats verkoper = " << rec.verkwpl << endl; cout << "Herkomst auto = " << rec.indherkomst << endl; cout << "Bouwjaar = " << rec.bouwjaar << endl; cout << "Prijs = " << rec.prijs << endl; cout << endl; } cout << "Voer gegevens in de database...\n"; cout << "Merk: "; cin.getline(rec.merk, 40); cout << "Type: "; cin.getline(rec.type, 40); cout << "Kleur: "; cin.getline(rec.kleur, 40); cout << "Nummer verkoper: "; cin >> rec.verknr; cin.get(); cout << "Naam verkoper: "; cin.getline(rec.verknaam, 40); cout << "Adres verkoper: "; cin.getline(rec.verkadres, 60); cout << "Woonplaats verkoper: "; cin.getline(rec.verkwpl, 40); cout << "Herkomst auto: "; rec.indherkomst = cin.get(); cout << "Bouwjaar: "; cin >> rec.bouwjaar; cin.get(); cout << "Prijs: "; cin >> rec.prijs; cin.get(); if (SaveDB(&rec)) cout << "\nDatabase opgeslagen!\n"; else cout << "\nKon database niet opslaan!\n"; cout << "\n[druk op enter]"; cin.get(); return 0; } |
Nu wordt er dus 1x om de gegevens van een autoverkoper gevraagd en die word ook 1x weergegeven. De bedoeling is dat er meerdere verkopers ingevoerd moeten worden... Die gegevens moeten dus in een apart bestand weggeschreven worden. Normaal zou je gewoon een array kunnen gebruiken en dan met een for loop zoveel dingen in kunnen voeren als je zelf wilt. Nu staat bijv. in mijn boek en ook op veel pagina's op het internet dat je door middel van (bijv.) rec[i].merk meerdere keren de structure kunt gebruiken. dus dan krijg je rec[0].merk, rec[1].merk. rec[2].merk etc. als ik dus rec[i] gebruik krijg in een undeclared identifier terwijl ik i toch echt als int i = 0 heb gedeclared (en natuurlijk met een for loop (bijv. for(i = 0; i < aantal; i++) waarbij aantal dan bijv. 3 is) de i steeds laten verhogen. Ik heb ook al geprobeerd om alle recs aan te passen naar rec[0], maar zelfs dat mag al niet.
De vraag is, zo moet het blijkbaar dus niet, maar hoe dan wel? (ben al een behoorlijk lange tijd bezig