Inleiding programmeren in C++ voor LS&Ters 2002
Tweede programmeeropgave - Het Menu

De tweede programmeeropgave van het vak Inleiding programmeren in C++ voor LS&Ters in het voorjaar van 2002 heet Het Menu. Zie ook de (werk)colleges en de hints!

Het is de bedoeling om een C++-programma te maken dat aan de gebruiker een zogenaamd menu presenteert. Dat betekent dat de gebruiker van het programma kan kiezen uit een aantal mogelijkheden, de zogeheten opties. Het (hoofd)menu heeft drie opties: Stoppen, Experiment en Ontspanning. De opties worden gekozen door de eerste letter van de betreffende optie in te toetsen, bijvoorbeeld een s of S om te stoppen. Uiteraard wordt een en ander duidelijk en ondubbelzinnig aan de gebruiker meegedeeld. De optie Experiment leidt tot een nieuw menu. Dit menu heeft op zich weer een aantal opties: allereerst de optie Terug naar het hoofdmenu, en verder de opties Ontbinden en Sorteren. De optie Ontspanning leidt op zijn beurt tot het spelmenu, waarin de opties Terug naar het hoofdmenu, Galgje en Klok aanwezig zijn.
De door de gebruiker ingetoetste symbolen moeten gecontroleerd worden, dat wil zeggen dat er binnen redelijke grenzen geen foute invoer geaccepteerd wordt. Zo zal het intoetsen van bijvoorbeeld q of & in het hoofdmenu een waarschuwing opleveren, of genegeerd worden. Er mag wel worden aangenomen dat de gebruiker op de juiste momenten de Enter-toets bedient. Liefhebbers mogen er voor zorgen dat het goed blijft gaan als de gebruiker eens letters in plaats van de gevraagde cijfers ingeeft.

De optie Ontbinden
Aan de gebruiker wordt een geheel getal n gevraagd, kleiner dan zeg 1000000000. Vervolgens wordt dit getal in priemfactoren ontbonden, en de ontbinding wordt netjes op het beeldscherm afgedrukt. Een voorbeeld met n gelijk aan 223092870:
   1  1  1  1   1   1   1   1   1
  2 *3 *5 *7 *11 *13 *17 *19 *23
En met n gelijk aan 15360:
   10  1  1
  2  *3 *5
Er moeten dus twee regels worden afgedrukt (bijvoorbeeld met behulp van int arrays), waarbij streng gelet wordt op de spatiëring.

De optie Sorteren
Aan de gebruiker wordt een geheel getal n gevraagd, kleiner dan zeg 400. Vervolgens wordt een willekeurig rijtje met n getallen gegenereerd: dit moet oplopend gesorteerd worden.
Gebruik moet worden gemaakt van Invoegsorteer (insertion sort), zie dictaat. Het aantal vergelijkingen benodigd voor het sorteren wordt afgedrukt.
Voor het genereren van het rijtje is een eigengemaakte randomgenerator nodig; kijk hiervoor in het dictaat.

De optie Galgje
De gebruiker moet een woord proberen te raden dat de computer in "gedachten" heeft. De gebruiker mag steeds (tot bijvoorbeeld acht keer toe, maximaal vijf keer een foute letter) een letter noemen, waarna de computer onthult of en waar deze letter in het woord voorkomt. Of de gebruiker hoofdletters of kleine letters invoert maakt niet uit. De lengte van het woord is aan de gebruiker bekend. De woorden -die van verschillende lengte zijn, maximaal vijftien letters per woord- zitten in een array met bijvoorbeeld twintig (een const int) woorden. Gebruik de randomgenerator om schijnbaar willekeurige woorden uit dit array te halen. Als het programma begint moeten de woorden uit een file gelezen worden en in het array gestopt.

[FRACTAL] De optie Klok
Afgedrukt wordt de huidige tijd, en wel als uur-minuut-seconde-dag-maand-jaar, waarbij dag zondag/maandag/... plus het dagnummer (vrijdag 15) is. Gebruik time.h of ctime, zie Ammeraal Hoofdstuk 11.9.

Opmerkingen
Gebruik geschikte functies. Om het gebruik van functies goed te oefenen mogen bij deze opgave bij elke functie tussen begin-{ en eind-} hooguit circa 20 niet al te volle regels staan! Elke functie dient van commentaar voorzien te zijn. Let op goed parametergebruik: alle parameters in de heading doorgeven, en de variabele-declaraties bij het begin van main en andere functies. De enige te gebruiken headerfiles zijn: iostream, fstream en ctime. Zeer ruwe indicatie voor de lengte van het C++-programma: 400 regels. Denk aan het infoblokje.
Uiterste inleverdatum: maandag 11 maart 2002, 17.00 uur. In te leveren: schijfje met het programma, of het programma per email aan kosters@liacs.nl sturen. Stuur geen executable's per email! Verder ook een listing/afdruk op papier in de speciaal daarvoor bestemde doos "Inleiding Programmeren voor LS&Ters" in de metalen boekenkast in zaal 301. Gaarne een envelop om het geheel heen doen. Overal datum en namen van de makers vermelden.

Te gebruiken compiler: als het maar C++ is; het programma moet in principe onder Visual C++ draaien. Normering: layout 1; commentaar 2; modulariteit 3; werking 4. Eventuele aanvullingen en verbeteringen: lees deze WWW-bladzijde.


Vragen en/of opmerkingen kunnen worden gestuurd naar: kosters@liacs.nl.

15 februari 2002 - http://www.liacs.nl/home/kosters/lst/lstop2.html