Opgave 4 (2020)
Last updated
Last updated
Volgende opgave was de vaardigheidsproefopdracht voor examen van dit vak (Programming Principles) in januari 2019
Een firma die huisverkopers opleidt heeft je gevraagd om een trainingspakket te maken. Het pakket moet de trainees in staat stellen om te oefenen op het zo goed mogelijk kopen van huizen die op de markt verschijnen.
Er zijn twee gebruikers:
De trainer: degene die het programma instelt aan de start
De trainee: de persoon die de opleiding volgt en dus de training doet.
Er hoeft geen rekening gehouden te worden met foute invoer van de gebruiker. De gebruiker voert enkel zaken in die toegestaan zijn.
Het programma doorloopt een aantal fasen:
Fase 1 (4punten): De trainer stelt de moeilijkheidsgraad in van het programma zodat het startbudget kan berekend worden
Fase 2 (8 punten): De trainee krijgt huizen aangeboden (willekeurig) waar hij op kan bieden. Van zodra het budget op is wordt naar de volgende fase doorgegaan.
Fase 3 (4 punten): De trainer én trainee krijgen te zien hoe goed de trainee het heeft gedaan
Achteraan is ook een aanvullende-opgave (2 punten waard) waar je eventueel al van bij de start rekening mee kunt houden.
De moeilijkheidsgraad wordt gevraagd (een getal van 1 tot en met 9, hierop moet géén foutcontrole gebeuren).
Er wordt gevraagd of de trainee een bonus krijgt (j of n) en dit wordt als bool bewaard.
Een methode “BudgetGenerator” wordt aangeroepen. Deze zal een budget teruggeven dat je bewaard in het hoofdprogramma en nodig hebt in de volgende fasen.
Voorbeeld output
Output: geeft double terug ( namelijk het berekende startbudget)
Input:
De moeilijkheidsgraad als geheel getal, standaardwaarde = 5
De startbonus als bool, standaardwaarde = true
Werking:
Het basisbudget is 5000. Indien een startbonus wordt toegestaan komt hier 2500 bij. Per moeilijkheidsgraad gaat er 100 euro van het totaal budget af.
Voorbeeld:
moeilijkheidsgraad 5 en geen startbonus => budget = 5000 – (5*100) = 4500.
Een loop wordt gestart, zolang de trainee budget heeft krijgt hij steeds een nieuw huis te zien dat hij kan kopen. Wanneer er 20 huizen getoond stopt de loop ook, ongeacht of de gebruiker nog budget over had of niet.
De loop:
Het huidige budget wordt steeds opnieuw getoond
De prijs van een nieuw huis wordt gegenereerd in een methode “HuisPrijs”, de methode toont ook wat het huis heeft (qua kamers en terras)
De te betalen prijs wordt getoond.
De trainer kan beslissen om het huis te kopen of niet
Wanneer de trainee een huis koopt zal zijn budget verminderd worden met de prijs van het huidige huis.
De gebruiker moet hiervoor j of n antwoorden op de vraag of hij dit huis wenst te kopen
Er wordt bijgehouden welke huizen de trainee wel én niet kocht alsook de prijs van ieder huis. Dit wordt in 2 arrays bewaard:
1 array (double) zal de prijzen van ieder gegenereerd huis bijhouden
1 array (bool) zal bijhouden of de gebruiker het huis wel of niet kocht
Voorbeeld output (deels) (geel gemarkeerd = invoer gebruiker)
Output: geeft int terug ( namelijk de prijs van het nieuwe huis)
Input: geen
Werking:
De methode genereert een huis:
Een huis heeft 1, 2 of 3 slaapkamers. Dit wordt willekeurig gegenereerd
Eén derde van de huizen (willekeurig) heeft een terras, de andere huizen niet
De prijs wordt berekend
Ieder huis heeft als basisprijs 1000
Per slaapkamer komt er 120 euro bij
Een terras doet nog eens 450 euro er bij
De methode toont een beschrijving van het huis alsook de prijs. Voorbeelden:
Huis met 2 slaapkamers en geen terras: 1240 euro
Huis met 1 slaapkamers en geen terras: 1120 euro
De prijs wordt teruggegeven
In deze fase wordt een overzicht getoond van de gekochte én niet gekochte huizen. Gebruik hiervoor de twee arrays waarin je die informatie bijhield. Je toont telkens de prijs van het huis alsook of deze wel of niet werd gekocht.
Na het overzicht wordt de gemiddelde prijs van de aangekochte huizen getoond m.b.v. een methode BerekenGemiddelde. Deze methode zal het gemiddelde berekenen en in het hoofdprogramma wordt deze dan in een zin getoond (zie voorbeeld output)
Voorbeeld output
Output: geeft double terug ( namelijk de gemiddelde prijs van de gekochte huizen)
Input:
een array van type bool die aangeeft (in volgorde) welke huizen wel en niet werden gekocht,
een array van type int die de prijzen van alle gegenereerde huizen bevat (in dezelfde volgorde als de andere array)
Werking:
Het gemiddelde wordt berekend van de prijzen van de huizen die wél werden gekocht.
Iedere fase (3 in totaal) wordt in een aparte methode geplaatst. In de main-methode mogen enkel deze 3 methode-fasen staan alsook eventuele variabelen die je nodig hebt om data tussen de methoden uit te wisselen.