|
Deze opgave probeert te bepalen of iemand geschikt is voor een studie aan de universiteit. Daartoe moeten enkele vragen beantwoord worden; zo moet de kandidaat weten op welke dag hij/zij geboren is. En bijvoorbeeld rekenen is essentieel voor een exacte studie.
Om te beginnen moet de
gebruiker zijn/haar geboortejaar als geheel getal invoeren,
en daarna de geboortemaand, ook als geheel getal.
Vervolgens voert hij/zij de geboortedag in,
wederom als geheel getal.
Het programma berekent dan de leeftijd van de gebruiker,
zowel in aantal jaren als in maanden
(bijvoorbeeld: 10 jaar en 3 maanden; 123 maanden);
beide worden op het beeldscherm getoond.
De leeftijd in maanden wordt analoog aan die in jaren bepaald
(als je op de 31ste geboren bent, wordt je iedere maand
een maand ouder, maar je bent niet zo vaak "maandig" — dat ben je namelijk alleen
op iedere 31ste).
Aangenomen mag worden dat het programma op de peildatum
20 september 2013 draait (gebruik const;
liefhebbers
mogen met ctime de echte huidige dag
opvragen en gebruiken). Let op: het
programma moet in principe ook op andere
peildata vanaf heden tot 2100 correct werken!
Gebruikers jonger dan 10 jaar (de 10-de verjaardag nog niet gevierd)
of ouder dan 100 jaar
(dus 101-ste verjaardag reeds gevierd) worden
meteen geweigerd.
Als uit het geboortejaar direct al duidelijk is dat het met de leeftijd
niets gaat worden, hoeven de vragen naar maand en dag
niet gesteld te worden. Maar soms biedt pas de dag uitsluitsel!
Nu moet de gebruiker zijn/haar geboortedag
(zondag, maandag, ..., zaterdag) weten.
Als deze fout is, wordt men meteen "verwijderd",
en stopt het programma.
Het antwoord moet met één letter (geen cijfer) worden gegeven,
bijvoorbeeld w voor woensdag. Bedenk zelf iets voor het d- en z-probleem.
Het is niet de bedoeling ctime
te gebruiken om deze dag uit te rekenen.
Het programma moet een berekening bevatten
om deze dag te bepalen!
Gebruik (bijvoorbeeld) dat 1 januari 1901
op een dinsdag viel.
Gebruik niet het
Doomsday algoritme
(zie ook hier).
Voor de periode 1901–2099 geldt dat een jaar een schrikkeljaar
is precies dan als het jaartal door 4 deelbaar is.
Vervolgens wordt nu een vraag gesteld om te bepalen om de kandidaat
kan rekenen. Mocht dat niet zo zijn, wordt er getest hoe
het met de literatuurkennis staat.
Voor de rekenvraag moeten twee willekeurige getallen
met precies drie cijfers voor en precies twee cijfers na de komma worden
opgeteld; bijvoorbeeld 123.04 + 777.70. De som mag niet
boven 1000 uitkomen.
Het antwoord (een double)
wordt goed gerekend als het maximaal
0.01 naast het exacte antwoord zit. Is het antwoord goed,
dan wordt de kandidaat tot een exacte studie toegelaten, en stopt het programma.
Anders wordt een meerkeuzevraag (A/B/C/D) over literatuur
gesteld, die uitsluitsel biedt over de toelating
tot een alpha-studie. Als het daar ook mis gaat,
is men niet geschikt voor een universitaire studie.
Voor het fabriceren van willekeurige gehele getallen moet
gebruik worden gemaakt van de random-generator uit C++. Gebruik bijvoorbeeld
x = rand ( ) % 20;
om een "willekeurig" getal tussen 0 en 19
(grenzen inbegrepen) in de
int variabele x te krijgen.
Doe dit twee maal per decimaal getal: voor het gedeelte voor de komma en voor het gedeelte na de komma.
Geef bovenaan in het programma srand (42); om
de randomgenerator te initialiseren. In plaats van 42 mag ook een
ander getal staan — of zelfs, voor liefhebbers, de tijd.
En soms is hiervoor #include <cstdlib> nodig,
helemaal bovenaan het programma.
Elk programma moet bij het "runnen"
aan het begin op het beeldscherm laten zien wie
de makers zijn, wat
hun jaar van aankomst, studierichting en studentnummer is, welke opgave het is,
wat de gebruiker te wachten en te doen staat,
de datum waarop het programma gemaakt is,
enzovoorts.
Dit noemen we het "infoblokje".
Probeer dit er netjes uit te laten zien.
Maak geen al te complexe kaders eromheen;
gebruik liefst alleen de eerste 128 gewone karakters.
Bovenaan het programma (in de C++-code dus) staat uiteraard commentaar,
waarin een aantal van deze elementen ook weer terugkomen,
maar dan meer gericht op programmeurs,
bijvoorbeeld de naam van de gebruikte compiler.
Denk aan het gebruik van lege regels, commentaar, constanten, enzovoorts. Bovenaan het programma dient ook commentaar over het programma te staan, speciaal bestemd voor andere programmeurs (en nakijkers), bijvoorbeeld kort wat het programma doet, en welke compiler gebruikt is: gebruikers van het programma vinden dat laatste niet interessant. Het infoblokje moet tijdens het "runnen" van het programma op het scherm komen, en is bestemd voor gebruikers van het programma. Lees ook eens over richtlijnen bij het maken van programmeeropgaven, en bestudeer de huisregels. Er hoeft geen gebruik van functies, arrays en het while- en for-statement gemaakt te worden. Alleen de headerfile iostream mag en moet gebruikt worden — en eventueel ctime en string voor liefhebbers; en misschien cstdlib. Ruwe indicatie voor de lengte van het C++-programma: 200 regels (300 mag ook wel).
Uiterste inleverdatum: vrijdag 20 september 2013, 17:00 uur.
Manier van inleveren (één exemplaar per koppel,
dat — ter herinnering —
uit twee personen bestaat):
Overal duidelijk datum en namen van de twee makers vermelden, in het bijzonder als commentaar in de eerste regels van de C++-code. Lees bij het derde werkcollege hoe het verslag eruit moet zien. Zijn spaties/tabs goed verwerkt?