Op maandag 10 september 2001 17:24 schreef frankschers het volgende:
Op school hadden we vandaag programmeren. Nu moesten we een programma maken dat je gebruiker een getal ingedachte neemt en de computer moet het raden.
Dus de computer moet een random getal kiezen. En de gebruiker moet dan aangeven door bijv. L=lager, H=hoger of C=correct intevullen.
Stel je voor.
Je neemt het getal 50 ingedachte, het eerste random getal dat de pc geeft is bijv. 30.
Nu hoeft de pc geen random meer uittevoeren tussen 0 en de 30. Hoe kun je ervoor zorgen dat hij vanaf de 30 tot de 100 een random getal kiest?
Dit is algoritme-les, geen programmeerles. Het correcte hoger-lager algoritme is een van de eerste dingen die je hoort te leren inderdaad.
Als iemand irl hoger-lager met jou doet op een getal van 0-100 ga je toch ook steeds halverwege zitten, waarom de computer dan niet? Hier moet (lees
MAG) je random helemaal niet bij gebruiken, lijkt me zelfs zware minpunten voor deze opdracht als de docent een beetje hersens heeft. Wordt iets in de richting van (sorry ik ben allergisch voor cin en cout en gebruik dus ook in C++ altijd printf):
code:
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
| #include <stdio.h>
#include <conio.h>
#define LowerCase(p_Char) (((p_Char) >= 'A' && (p_Char) <= 'Z') ? (p_Char) - 32 : (p_Char))
const int c_MinGetal = 0;
const int c_MaxGetal = 100;
int main()
{
int l_MinGetal = c_MinGetal;
int l_MaxGetal = c_MaxGetal;
int l_Pogingen = 0;
int l_Gok;
char l_Input;
// Druk welkomstmededeling af
printf("Hoger-lager\n\nNeem een getal in gedachten tussen %d "
"en %d. Druk op een toets daarna.", c_MinGetal, c_MaxGetal);
while(!getchar());
// Eindeloze loop totdat we gelijk hebben gekregen
while(true)
{
// Maak een nieuwe gok en verhoog aantal pogingen
l_Gok = (l_MinGetal + l_MaxGetal) / 2;
l_Pogingen++;
// Druk gok af en wacht op een correct antwoord
printf("Ik gok %d.", l_Gok);
do
{
printf("\nMoet ik (H)oger, (L)ager of is dit (C)orrect? ");
l_Input = LowerCase(getchar());
}
while(l_Input != 'h' && l_Input != 'l' && l_Input != 'c');
// Handel het antwoord correct af
if (l_Input == 'c')
break;
else if (l_Input == 'h')
l_MinGetal = l_Gok;
else if (l_Input == 'l')
l_MaxGetal = l_Gok;
}
// Druk aantal pogingen af en wacht op input
printf("Ik had %d poging%s nodig!\n\n", l_Pogingen,
l_Pogingen == 1 ? "" : "en");
printf("Druk op een toets om te beeindigen...");
while(!getchar());
// Verlaat programma zonder fouten
return 0;
} |
As usual: Niet door de compiler geweest, en 100% not guaranteed to work
Je kunt met die consts bovenin spelen voor een grotere range, en volgens mij heb ik ieder bonuspunt hier voor je binnengehaald (tot aan het al of niet meervoud bij het aantal pogingen aan toe

)