# Oefeningen H4

{% hint style="warning" %}
**Gebruik je kennis van debuggen om vanaf dit hoofstuk problemen op te lossen. Gebruik niet `Console.WriteLine()` om de waarde van een variabele te controleren at-runtime, maar gebruik daarentegen breakpoints!**
{% endhint %}

{% hint style="info" %}
Vanaf dit punt zullen de meeste oefeningen iets "vragen" aan de gebruiker. Hiermee wordt bedoeld dat je de gebruikersinput via `ReadLine` moet inlezen en indien nodig moet converteren naar het gewenste type.
{% endhint %}

{% hint style="info" %}
Gebruikersinvoer in de voorbeelden zullen met een liggend streepje voorafgegaan worden. Zo zie je duidelijk wat het verschil is tussen `ReadLine` en `WriteLine` in de voorbeelduitvoer.
{% endhint %}

## Supercomputer (Dodona beschikbaar)

Vraag aan de gebruiker 3 kommagetallen. Bereken het gemiddelde van deze 3 getallen en toon dit als een kommagetal op het scherm

Voorbeeld:

```
Geef getal 1:
>23,4
Geef getal 2:
>34,6
Geef getal 3:
>27,7
Het gemiddelde hiervan is: 28,566666666666666
```

## Vierkant (*Essential*) (Dodona beschikbaar)

Schrijf een programma om de omtrek en de oppervlakte van een vierkant te bepalen. De zijde wordt ingelezen.

Voorbeeld:

```
Geef de zijde:
>4,6
Omtrek is 18.4
Oppervlakte is 21,16
```

## Balk (Dodona beschikbaar)

Bereken de oppervlakte en de inhoud van een balk . De gegevens (hoogte, breedte, lengte) worden ingelezen als gehele getallen. Zorg ervoor dat de uitvoer er als volgt uitziet:

```
Lengte?
>3
Breedte?
>5
Hoogte?
>4
Oppervlakte is 94
Inhoud is 60
```

## BMI berekenaar (*Essential*) (Dodona beschikbaar)

Maak een programma dat aan de gebruiker z'n lengte (in cm) en gewicht (in kg) vraagt en vervolgens de berekende BMI (Body Mass Index) toont. Zoek zelf op hoe je het BMI berekent.

Gebruik `Math.Round` om de uitkomst tot maximum 2 cijfers na de komma te tonen.

Reken na met je rekenmachine of je uitkomst wel degelijk klopt!

Uitvoer:

```
Wat is uw lengte in cm?
[lengteInCm]

Wat is uw gewicht in kg?
[gewicht]

Een persoon met een lengte van [lengteInMeter] m en een gewicht van [gewicht] kg heeft een BMI van [bmi].
```

## Op-de-poef (*Essential*)

Een vaste klant in je café bestelt altijd "op-de-poef". Dat wil zeggen dat hij niet onmiddellijk betaalt en dat z'n rekeningen worden neergeschreven. Ooit zal de klant dan gevraagd worden de hele som te betalen.

Schrijf een programma dat 5 keer na elkaar aan de barman vraagt om een bedrag in te voeren. Het ingevoerde bedrag wordt opgeteld bij wat er reeds op de rekening staat. Na 5 keer wordt de totale som getoond alsook hoeveel weken het duurt indien de klant wekelijks 10 euro afbetaalt.

Voorbeeldwerking:

```
Voer bedrag in?
>12
De poef staat op 12 euro.
Voer bedrag in?
>14
De poef staat op 26 euro.
Voer bedrag in?
>3
De poef staat op 29 euro.
Voer bedrag in?
>8
De poef staat op 37 euro.
Voer bedrag in?
>2
De poef staat op 39 euro.
*************************
Het totaal van  de poef is 39 en zal 4 weken duren om volledig afbetaald te worden.
```

{% hint style="warning" %}
Voor deze oefening heb je `Math.Ceiling()` nodig. Deze methode zal een getal altijd naar boven afronden.
{% endhint %}

## Feestkassa (*Essential*)

De plaatselijke voetbalclub organiseert een mosselfestijn. Naast mosselen met frietjes (20 EUR) bieden ze voor de kinderen de mogelijkheid om een koninginnenhapje (10 EUR) te kiezen. Verder is er een ijsje als nagerecht voorzien (3 EUR). Om het gemakkelijk te maken kosten alle dranken 2 EUR.

Ontwerp een applicatie zodat de vrijwilliger aan de kassa alleen maar de juiste aantallen moet ingeven, lijn per lijn. (frietjes, koninginnenhapje, ijsje, drank) om de totaal te betalen prijs te berekenen.

Het resultaat wordt als volgt weergegeven: `Het totaal te betalen bedrag is x EURO`.

Voorbeeld:

```
Frietjes?
>3
Tussenprijs= 60 euro
koninginnenhapje?
>5
Tussenprijs= 60 euro + 50 euro
Ijsjes?
>2
Tussenprijs= 60 euro + 50 euro + 6 euro
Dranken?
>5
Tussenprijs= 60 euro + 50 euro + 6 euro + 10 euro

Het totaal te betalen bedrag is 126 EURO.
```

## Het Orakeltje van Delphi (*Essential*)

Gebruik een random generator om een orakel (een duur woord voor waarzegger) te maken, namelijk de kleine broer of zus van het [Orakel van Delphi](https://nl.wikipedia.org/wiki/Orakel_van_Delphi). Het programma zal aan de gebruiker vertellen hoe lang deze nog zal leven. Bijvoorbeeld: "Je zal nog 15 jaar leven.".

Het orakel zal enkel realistische getallen geven. M.a.w., getallen van 5 tot en met 125 jaar.

{% hint style="info" %}
We gaan geregeld een oefening in een later hoofdstuk verder uitbreiden. Het orakeltje van Delphi is er zo eentje. **Bewaar je oefeningen dus goed!**
{% endhint %}

## Geometric fun (Dodona beschikbaar)

Vraag aan de gebruiker een hoek in graden. Zet deze om naar radialen , gebruik `Math.PI` voor Pi. Gebruik vervolgens de verschillende geometrische functies in de `Math.` bibliotheek om de sinus (`.Sin`), cosinus (`.Cos`) en tangens (`.Tan`) van de hoek aan de gebruiker te tonen

{% hint style="info" %}
Denk eraan: de methoden die met hoeken werken, werken in radialen, daarom moeten we deze eerst omzetten. 1 rad = 180°/PI = 57.295779513°.
{% endhint %}

{% hint style="info" %}
Je zal merken dat voor bepaalde hoeken (bijvoorbeeld 90 graden) je erg kleine of erg grote waarden krijgt, dat is normaal. De geometrische functie in de Math-bibliotheek berekenen de resultaten (en werken dus niet met een tabel) wat met eindige kommagetallen ervoor zorgt dat je soms in plaats van 1 of 0 (of plus of min oneindig) iets erg kleins of groot krijgt.
{% endhint %}

Uitvoer:

```
Geef de hoek in graden:
[hoekInGraden]

Sinus van deze hoek is: [sinus]
Cosinus van deze hoek is: [cosinus]
Tangens van deze hoek is: [tangens]
```

## Schaak-ELO

## De Festivalganger (*Final Essentials*)

Je hebt tickets bemachtigd voor een fantastisch driedaags festival! Maar festivals zijn duur, dus je besluit een app te schrijven om je budget te beheren.

Het programma werkt als volgt:

1. Vraag de gebruiker zijn/haar **naam** en het **totaal budget**.
2. Voor elke dag (Dag 1, Dag 2 en Dag 3):
   * Vraag hoeveel **drankjes** (à € 4.50) de gebruiker heeft gedronken.
   * Vraag hoeveel **snacks** (à € 9.00) de gebruiker heeft gegeten.
   * Daarnaast berekent het programma een **onvoorziene kost** voor die dag (bijvoorbeeld zonnecrème, poncho, fooi, ...). Dit is een willekeurig getal tussen 5 en 20.
   * Bereken de totale kosten van de dag.
   * Trek dit bedrag van het budget af.
   * Toon de kosten van de dag en het nieuwe resterende budget.
3. Zorg ervoor dat het resterende budget telkens wordt afgerond op 2 cijfers na de komma met `Math.Round()`.

*Opmerking: Omdat we nog geen lussen (loops) hebben gezien, mag je de code voor de 3 dagen gewoon onder elkaar kopiëren.*

**Voorbeeld output:** (tekst na `>` is invoer)

```
Welkom op het festival! Wat is je naam?
>Jos
Hoeveel budget heb je mee?
>250

--- DAG 1 ---
Aantal drankjes?
>5
Aantal snacks?
>2
Oeps! Onvoorziene kost van 12 euro.
Totaal dag 1: 52,5 euro
Budget over: 197,5 euro

--- DAG 2 ---
Aantal drankjes?
>8
Aantal snacks?
>3
Oeps! Onvoorziene kost van 6 euro.
Totaal dag 2: 69 euro
Budget over: 128,5 euro

--- DAG 3 ---
Aantal drankjes?
>10
Aantal snacks?
>0
Oeps! Onvoorziene kost van 9 euro.
Totaal dag 3: 54 euro
Budget over: 74,5 euro

Jos, je hebt nog 74,5 euro over na 3 dagen feesten!
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apwt.gitbook.io/ziescherp-oefeningen/oefeningen-h1-tot-en-met-h5/a_practica-3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
