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