Dit werkt, maar dit is een prima voorbeeld van een situatie waar een for() loop duidelijker is:
C++:
1
2
3
| for ( int i = 0 ; i < 4 ; ++i) {
std::cout << nummer[i] << "\n";
} |
Over de rest van je programma heb ik ook wat opmerkingen (goed bedoeld hoor

):
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
| // in C++ include je tegenwoordig iostream
#include <iostream.h>
// De variabelen die jij declareerde zijn globaal, oftewel overal
// in het programma beschikbaar, dit is nergens voor nodig.
// In principe kun je het beste variabelen alleen beschikbaar
// maken voor de code die ze nodig heeft. Deze regel kan
// dus weg, we declareren de variabelen ergens anders.
int getal, aantal, nummer[4];
// Je count() functie is recursief (roept zichzelf aan), in dit
// geval is dit niet nodig. Dit kan prima opgelost worden
// met een for() loop. Wen er ook aan om je code in te
// springen, dit leest een stuk makkelijker als je over een
// maand wilt weten waar je eigenlijk mee bezig was ;)
void count()
{
// Deze if() met aanroep van dezelfde functie kan vervangen
// worden door een for() loop.
if (aantal < 5)
{
cout<<"Voer een getal in ";
cout<<nummer[aantal]<<endl; // wat wil je hier doen?
// nu stop je de ingevoerde waarde in getal, waarna je
// nummer[aantal] gelijk zet aan getal. Daarna gebruik
// je getal niet meer. Die stap kun je overslaan.
cin>>getal;
nummer[aantal] = getal;
// Dit soort commentaar voegt niet zo heel veel toe, je ziet
//meteen dat aantal met 1 wordt verhoogd.
aantal = aantal+1; //increase by 1
count();
} //until
// Ik neem aan dat je je while() loop hier hebt neer gezet.
// Deze kan dus vervangen worden door een for().
while (teller != 5)
{
cout<<nummer[teller]<<endl;
teller = teller+1;
}
}
int main()
{
aantal = 0;
count();
return 0;
} |
Als we dit alles aanpassen wordt het:
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
| #include <iostream>
// In de huidige C++ standaard zitten cout en cin in de std namespace.
// Daarom gebruik ik std::cout en std::cin, als je ziek wordt van elke
// keer die std:: er bij zetten kun je 'using std::cout;' gebruiken.
void count()
{
// nummer is nu alleen bereikbaar binnen deze functie.
// De variabelen getal en aantal hebben we niet nodig.
int nummer[4];
// Voor een variabele die alleen als tellertje wordt gebruikt
// neem ik meestal een korte naam.
for ( int i = 0 ; i < 4 ; ++i) {
std::cout << "Voer een getal in ";
// We stoppen het getal meteen in nummer[i]
std::cin >> nummer[i];
// Normaal gesproken zou je hier controleren of er
// wel een nummer gelezen is.
}
// Deze loop print alle nummers op het scherm.
for ( int i = 0 ; i < 4 ; ++i) {
// Ik gebruik "\n" om een regeleinde te printen. std::endl flusht
// namelijke meteen de buffer naar het scherm, en dat is (iets)
// langzamer, en in dit geval sowieso onnodig.
std::cout << nummer[i] << "\n";
}
}
int main()
{
count();
return 0;
} |
Nog één dingetje, je had 'if ( aantal < 5)' maar dit betekent dat je ook in nummer[4] probeert te schrijven. Dat mag niet, want nummer heeft maar 4 elementen:
C++:
1
2
3
4
5
6
7
8
9
| int nummer[4];
// nummer heeft alleen de volgende elementen:
nummer[0];
nummer[1];
nummer[2];
nummer[3];
// Als je naar nummer[4] probeert te schrijven schrijf je naar
// het geheugen net na nummer[3], dit kan hele vervelende
// problemen geven. |
Je kunt er ook over denken om in plaats van een array een std::vector<int> te gebruiken. Hoop dat je er wat aan hebt

.
[
Voor 20% gewijzigd door
_Squatt_ op 13-06-2004 14:32
. Reden: wat toegevoegd, commentaar wat minder breed gemaakt om de layout te behouden. ]