Wiki

Clone wiki

CPL01 / extra_oefeningen_1

Extra oefeningen 1

Deze pagina bevat extra oefenopgaven met uitwerkingen. Om deze opgaven te kunnen maken moet je de computer de volgende opdrachten kunnen geven:

  • onthouden
  • rekenen
  • beslissen
  • herhalen
  • in- en output

Bij elke opdracht staat vermeld welke C-features in de uitwerking wordt gebruikt. Bedenk wel dat er altijd vele oplossingen mogelijk zijn. Zelfs voor een kleine opdracht.

Alle programma's zijn geschreven in C99 en bij het compileren moeten de volgende opties worden gebruikt: -std=c99 -pedantic -Wall.

Inches naar centimeters

Schrijf een C programma dat een lengte in inches inleest (een floating-point getal van het type double) en deze lengte omrekent naar centimeters. Gegeven is dat 1 inch gelijk is aan 2,54 cm. De berekende lengte in centimeters moet met 2 cijfers achter de decimale punt worden afgedrukt. Je mag ervan uitgaan dat de gebruiker van het programma de floating-point waarde op de juiste wijze invoert.

Voorbeeld: als de gebruiker de waarde 21.5 invoert (gevolgd door een Enter) dan ziet de gewenste uitvoer van het programma er als volgt uit (de invoer is ook weergegeven):

Geef lengte in inches: 21.5 Dit is een lengte van 54.61 cm

Uitwerking: inch2cm.c.

Magische constante

Een magisch vierkant van de orde n is een vierkant raster van n bij n hokjes waarin de getallen 1 t/m n^2 zodanig zijn ingevuld dat de kolommen, de rijen en de beide diagonalen alle dezelfde som opleveren. Zie eventueel https://nl.wikipedia.org/wiki/Magisch_vierkant. Deze som wordt de magische constante (m) genoemd. De waarde van m is eenvoudig te bereken met de formule: m = n * (n^2 + 1) / 2. Schrijf een programma waarin de orde van een magisch vierkant (een positief geheel getal) wordt ingelezen. Daarna moet het programma de bij deze orde behorende magische constante afdrukken.

In de uitwerking worden de volgende C-features gebruikt: int, rekenen, while, scanf, printf en fflush.

Als je fflush nog niet kent, lees dan: Hoe voorkom ik dat mijn programma rare dingen doet als in plaats van een getal een letter wordt ingetypt?.

Uitwerking: magische_constante.c.

Mogelijke uitvoer van het bovenstaande programma (de invoer van de gebruiker is ook weergegeven):

#!None
Geef de orde van een magisch vierkant: 8
De magische constante voor een magisch vierkant van 8 bij 8 is: 260

Even en oneven

Ontwerp een programma dat de gebruiker vraagt om positieve gehele getallen in te voeren. Dit programma moet net zo lang getallen inlezen totdat het getal 0 wordt ingevoerd. Hierna moet het programma afdrukken hoeveel even en hoeveel oneven getallen door de gebruiker zijn ingevoerd. Als de gebruiker negatieve getallen invoert dan moeten die niet worden meegeteld.

Tip: Een even getal is deelbaar door 2 en een oneven getal is niet deelbaar door 2. Als een getal x deelbaar is door 2 dan is x % 2 gelijk aan 0. Als een getal y niet deelbaar is door 2 dan is y % 2 gelijk aan 1.

In de uitwerking worden de volgende C-features gebruikt: int, rekenen (inclusief modulo %), if, else, do while, scanf, printf en fflush.

Als je fflush nog niet kent, lees dan: Hoe voorkom ik dat mijn programma rare dingen doet als in plaats van een getal een letter wordt ingetypt?.

Uitwerking: evenoneven.c.

Mogelijke uitvoer van het bovenstaande programma (de invoer van de gebruiker is ook weergegeven):

#!None
Geef een geheel getal groter dan of 0 om te stoppen: 7
Geef een geheel getal groter dan of 0 om te stoppen: 34
Geef een geheel getal groter dan of 0 om te stoppen: 19
Geef een geheel getal groter dan of 0 om te stoppen: -7
Negatief getal genegeerd!
Geef een geheel getal groter dan of 0 om te stoppen: 101
Geef een geheel getal groter dan of 0 om te stoppen: 0

Het aantal even getallen is 1
Het aantal oneven getallen is 3

Kerstboom

Een kerstboom is natuurlijk onmisbaar met Kerstmis. Om het aantal verbruikte kerstbomen te minderen moet je een programma schrijven dat een kerstboom met +-tekens afdrukt. De gebruiker voert een getal n (4 < n < 80) in dat de breedte van de kerstboom voorstelt. Het afdrukken van de kerstboom begint met de top (in het midden) en dijt per afgedrukte regel met twee +-tekens uit. De kerstboom moet natuurlijk wel een stam en een 'voet' of standaard hebben. Deze stam en voet moeten met *-tekens worden afgedrukt. De afmetingen van de stam en de voet zijn (als je het netjes doet) ook afhankelijk van $n$. Zorg ervoor dat het programma goed omgaat met de invoer $n$ ≤ 4 en $n$ ≥ 80. Aan het einde van het programma moet aan de gebruiker worden gevraagd of het programma herhaald moet worden. Als de gebruiker deze vraag beantwoord met j of J, dan moet het programma herhaald worden.

Deze opdracht is veel moeilijker dan hij lijkt.

In de uitwerking worden de volgende C-features gebruikt: char, int, rekenen (inclusief modulo %), do while, for, scanf, printf en fflush.

Als je fflush nog niet kent, lees dan: Hoe voorkom ik dat mijn programma rare dingen doet als in plaats van een getal een letter wordt ingetypt?.

Uitwerking: kerstboom.c.

Hier zijn enkele voorbeelden van kerstbomen die met het bovenstaande programma kunnen worden gemaakt:

n=5

#!none
  +
 +++
+++++
  *
 ***

n=10

#!none
    ++
   ++++
  ++++++
 ++++++++
++++++++++
    **
  ******

n=23

#!none
           +
          +++
         +++++
        +++++++
       +++++++++
      +++++++++++
     +++++++++++++
    +++++++++++++++
   +++++++++++++++++
  +++++++++++++++++++
 +++++++++++++++++++++
+++++++++++++++++++++++
          ***
          ***
          ***
       *********

n=41

                    +
                   +++
                  +++++
                 +++++++
                +++++++++
               +++++++++++
              +++++++++++++
             +++++++++++++++
            +++++++++++++++++
           +++++++++++++++++++
          +++++++++++++++++++++
         +++++++++++++++++++++++
        +++++++++++++++++++++++++
       +++++++++++++++++++++++++++
      +++++++++++++++++++++++++++++
     +++++++++++++++++++++++++++++++
    +++++++++++++++++++++++++++++++++
   +++++++++++++++++++++++++++++++++++
  +++++++++++++++++++++++++++++++++++++
 +++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++
                   ***
                   ***
                   ***
                   ***
                   ***
                *********
                *********

Voetbaltoto

Een voetbaltoto is een gokspel, waarin wordt ingezet op officiële voetbalwedstrijden. Op een totoformulier staan een aantal wedstrijden (meestal uit één speelronde van de competitie). Bij elke wedstrijd op het formulier kan men invullen: 1 (thuisploeg wint), 2 (uitploeg wint) of 3 (gelijkspel). Schrijf een C programma dat de gebruiker vraagt om de resultaten van een voetbaltoto (karakters 1 , 2 of 3) in te voeren. Dit programma moet net zo lang karakters inlezen totdat het karakter 0 wordt ingevoerd. Hierna moet het programma afdrukken hoeveel procent van alle ingevoerde wedstrijden in een gelijkspel is geëindigd. Dit percentage moet met 1 cijfers achter de decimale punt worden afgedrukt. Als de gebruiker andere karakters dan 1, 2, 3 of 0 invoert, dan moeten die genegeerd worden door het programma.

Bij de invoer:

#!None
1233-3213-1211-40

Is de verwachte uitvoer:

#!None
33.3% van de wedstrijden was een gelijkspel.

In de uitwerking worden de volgende C-features gebruikt: char, int, rekenen , do while, if, else, scanf en printf.

Uitwerking: voetbaltoto.c.

Updated