Elk programma moet aan het begin op het beeldscherm laten zien wie de makers zijn, wat hun jaar van aankomst 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 er een kader omheen of iets dergelijks.
Allereerst 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
en drukt deze af op het beeldscherm.
Aangenomen mag worden dat het programma op
2 februari 2004 draait (gebruik const;
liefhebbers mogen met ctime de echte huidige dag
opvragen en gebruiken).
Vervolgens wordt aan jongeren
twee maal
een controlevraag gesteld.
De eerste vraag is een meerkeuzevraag (A/B/C/D;
gebruik een char),
de tweede vraagt om een reëel getal (een double;
bijvoorbeeld: "Wat is π?").
De meerkeuzevraag moet exact goed beantwoord worden, het reële getal
mag er maximaal "epsilon" (een const,
bijvoorbeeld 0.4) naast zitten.
Is minstens een der vragen fout beantwoord, dan wordt
het kaartje € 5 duurder, en wordt er uiteraard geen korting gegeven;
zijn beide vragen goed, dan ben je een "echte" jongere.
Dan wordt de afstand in kilometers d
naar het reisdoel gevraagd — een geheel getal.
De kosten van het treinkaartje in euro's zijn
d2 / 314,159,
met een minimum van € 2,50.
Vervolgens krijgen echte jongeren 15% korting,
en wordt het resultaat
met 2 decimalen na de komma (de eurocenten)
afgedrukt; hierbij wordt op de gebruikelijke
wijze afgerond.
(Tip: werk in gehele centen, en gebruik
% 100 en / 100.)
Tot slot wordt
ook nog het op veelvouden van 5 cent afgeronde bedrag afgedrukt.
(Tip: gebruik % 5.)
Er mag geen gebruik gemaakt worden van setprecision
en dergelijke uit iomanip.
Bij afstanden kleiner dan of gelijk aan 0,
en afstanden groter dan 400 kilometer krijgt de gebruiker
nog één keer de kans een goede afstand in te vullen;
gaat het dan weer fout, dan stopt het programma
met een adequate melding.
Als de gebruiker een niet bestaande maand invoert, bijvoorbeeld -8, of een jaartal als 4242 (in de toekomst dus), stopt het programma met de mededeling dat dit niet kan. Evenzo voor een niet bestaande dag, bijvoorbeeld 31 april of 42 december. Denk ook aan schrikkeljaren (1900 was geen schrikkeljaar)! De maximum leeftijd is 150 jaar. We nemen aan dat de gebruiker zo vriendelijk is verder geen fouten te maken bij het invoeren van gegevens: hij/zij voert getallen of letters in als het moet, etcetera. Vanzelfsprekend worden hem/haar wel duidelijke vragen gepresenteerd.
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, bijvoorbeeld welke compiler gebruikt is: gebruikers van het programma vinden dat niet interessant. Het infoblokje moet tijdens het "runnen" van het programma op het scherm komen, en is bestemd voor gebruikers van het programma. Er hoeft geen gebruik van functies, arrays en het while-statement gemaakt te worden. Alleen de headerfile iostream mag gebruikt worden. Ruwe indicatie voor de lengte van het C++-programma: 200 regels. De opgave mag individueel of met twee personen gemaakt worden, maar niet in drie- of meertallen.
Uiterste inleverdatum: maandag 2 februari 2003, 11.00 uur. Wijze van inleveren:
Vragen en/of opmerkingen kunnen worden gestuurd naar: kosters@liacs.nl.
14 januari 2004 - http://www.liacs.nl/home/kosters/lst/lst04op1.html