|
Het is de bedoeling om een C++-programma te schrijven dat beoordeelt of de gebruiker knap genoeg is om een code te raden. Allereerst moet het programma iemands geboortedag en leeftijd bepalen. Daarna worden twee lastige vragen gesteld.
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, als verificatie, 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 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 door 4 deelbaar is.
De echte test bestaat uit een tweetal vragen. Mensen van 18 jaar of ouder worden bij iedere vraag met "u" aangesproken, jongeren met "je/jij". Splits de C++-code in het programma niet onnodig vaak!
Allereerst moet de gebruiker een meerkeuzevraag (A/B/C/D) goed beantwoorden. Is het antwoord fout, dan stopt het programma. Gebruikers tot en met 30 jaar krijgen een andere vraag dan de oudere gebruikers. Verder is de vraag dus steeds hetzelfde. De twee vragen moeten over films gaan. Hoofdletters en kleine letters moeten natuurlijk goed afgehandeld worden.
Als laatste moet de gebruiker
twee willekeurige gegeven gehele getallen tussen 1 en 999
op elkaar delen.
Gebruik hierbij bijvoorbeeld x = rand ( ) % 1000;
om een "willekeurig" getal tussen 0 en 999
(grenzen inbegrepen) in de
variabele x te krijgen.
De gebruiker moet het antwoord twee maal geven:
als geheel getal (dat precies goed moet zijn) en
als decimaal getal, met een decimale punt, dat er maximaal een constante
MAXFOUT (zeg 0.1) naast mag zitten.
Als de originele getallen bijvoorbeeld 7 en 2 zijn, is
het eerste antwoord 3, en wordt bij het tweede 3.45 goed gerekend.
Converteer zelf
op de juiste manier tussen int en double.
Op sommige systemen moet #include <cstdlib>
bovenaan het programma staan om random te mogen gebruiken.
En de randomgenerator kun je met
srand (123); of srand (jaar); "seed"-en.
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 een beetje aardig 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 23 september 2011, 17.00 uur.
Haagse studenten: maandagochtend 26 september 2011, 11.00 uur (voor het college).
Manier van inleveren (één exemplaar per koppel, dat — ter herinnering — uit maximaal twee personen bestaat):
Overal duidelijk datum en namen van de (maximaal 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?