Inleiding programmeren in C++, voor startende ondernemers in de ICT

Opdracht 1: Hoe oud bent u?

Soms is het aardig om te weten hoeveel dagen er zijn verstreken tussen twee bepaalde data. Je wilt bijvoorbeeld weten hoeveel dagen het geleden is dat een bepaalde gebeurtenis plaatsvond, of een ouder familielid toevallig precies twee keer zo oud is als jij, enz. Het resultaat van deze opdracht helpt je bij het beantwoorden van zulke vragen.

Opdracht
Schrijf een programma dat de gebruiker vraagt om twee data in te voeren tussen 1 januari 1900 en 31 december 2100 (deze twee data zelf mogen ook). Een datum wordt ingevoerd als drie gehele getallen, bijvoorbeeld 8 oktober 2002 als `8 10 2002'.
Je mag ervan uitgaan dat de gebruiker hier inderdaad drie gehele getallen invoert, maar het is niet zeker dat hij/zij ook werkelijk een geldige datum invoert, laat staan een datum tussen 1 januari 1900 en 31 december 2100. Bijvoorbeeld: `29 2 2002' is geen geldige datum, `2 -1 1988' is geen geldige datum, en `31 8 1880' is (in onze context) ook geen geldige datum. Het programma moet dus controleren of de ingevoerde data wel geldig zijn. Is dat niet het geval, dan moet dat aan de gebruiker gemeld worden en kan het programma stoppen.
Als we twee data hebben die aan de specificaties voldoen, dan berekenen we voor elk van de data `de hoeveelste dag sinds 1 januari 1900' het is. Bijvoorbeeld: `1 1 1900' is de 1-e dag sinds 1 januari 1900, `1 1 1901' is de 366-dag sinds 1 januari 1900. Het resultaat wordt op het scherm afgedrukt.
Ten slotte, als de eerste datum eerder in de tijd ligt dan de tweede datum, dan berekenen we hoeveel dagen er zijn verstreken tussen de twee data. Ook dit resultaat wordt op het scherm afgedrukt.

Benodigde kennis
Om te controleren of een datum geldig is, en hoeveel dagen er zijn verstreken sinds een bepaalde datum, moet je weten wanneer een jaar een schrikkeljaar is. De regel is (sinds paus Gregorius) als volgt: een jaar is een schrikkeljaar als het deelbaar is door 4, behalve als het deelbaar is door 100, maar weer wel als het deelbaar is door 400. Bijvoorbeeld: 1928 was een schrikkeljaar, 1900 was geen schrikkeljaar, en 2000 was weer wel een schrikkeljaar.

Omlijsting
Behalve het bovenstaande dien je aan het begin van het programma een (heel bescheiden) infoblokje op het scherm te zetten, dat aangeeft door wie het programma geschreven is, en wat je verder nog aan persoonlijke gegevens kwijt wil.
Zorg voor een overzichtelijke lay-out van je programma; spring in waar nodig en voeg lege regels toe waar nodig. Voeg ook (voldoende, maar niet overdadig) commentaar toe aan het programma. Dit alles is handig voor jezelf bij het debuggen van je programma, en als jezelf of iemand anders (de nakijker bijvoorbeeld) later nog eens naar de code kijkt. Zorg ten slotte voor heldere boodschappen aan de gebruiker, zodat die weet wat hij/zij moet doen.

Inleveren
Lever je programma uiterlijk op dinsdag 15 oktober 2002 in bij Rudy van Vliet, per email rvvliet@liacs.nl of op diskette. Een print is niet nodig.


Vragen en/of opmerkingen kunnen worden gestuurd naar Rudy van Vliet: rvvliet@liacs.nl.

Laatste wijziging: 4 oktober 2002 - http://www.liacs.nl/home/rvvliet/opdracht1soil.html