1. Het volgende programma zit vol met bugs. Gebruik de debugger om de bugs vinden en zorg dat het programma werkt zoals het moet werken. Lever de gecorrigeerde broncode in.
/*
Programmeur: dhr. Ronkes Agerbeek
Programma: Casino
Omschrijving: Gooit kop of munt.
*/
#include <iostream>
using namespace std;
// het programma start hier
int main()
{
// initialiseer startbedrag
float mySaldo;
// schrijf startbedrag naar scherm
cout << "Je begint met EUR 5.00.\n";
// vraag om inzet
float myInzet;
cout << "Hoeveel zet je in? ";
cin >> myInzet;
// is inzet groter dan saldo?
if (myInzet / mySaldo)
{
// ja, foutmelding
cout << "En hoe ga je betalen als je verliest? Lenen zeker? ";
cout << "Ga buiten spelen!";
// wacht op enter
cin.ignore();
cin.get();
// stop programma
return 0;
}
// is inzet kleiner dan 0?
if (myInzet < 0);
{
// ja, foutmelding
cout << "En hopen dat je verliest zeker! Nou, niet in mijn casino.";
// wacht op enter
cin.ignore();
cin.get();
// stop programma
return 0;
}
// gooi kop of munt
int myKeuze;
cout << "Inzet is EUR " << myInzet << ".\n";
cout << "Maak een keuze:\n";
cout << "1. Kop\n";
cout << "2. Munt\n";
cin >> myKeuze;
// is de keuze geldig
if ((myKeuze < 1) && (myKeuze > 2))
{
// nee, schrijf melding naar scherm
cout << "Jij speelt vals! Ik krijg al je geld. Je hebt EUR 0.\n";
// wacht op enter
cin.ignore();
cin.get();
// beëindig programma
return 0;
}
// bepaal juiste antwoord
int myUitkomst = 1;
// heeft de speler goed gegokt?
if (myKeuze = myUitkomst)
{
// ja, tel inzet op bij saldo
mySaldo + myInzet;
// schrijf melding naar scherm.
cout << "Helemaal goed!\n\n";
}
else
// nee, trek inzet af van saldo
mySaldo -= myInzet;
// schrijf melding naar het scherm
cout << "Oeps, fout gegokt.\n\n";
// schrijf eindsaldo naar scherm
cout << "Je houdt EUR " << myInzet << " over.";
// wacht op enter
cin.ignore();
cin.get();
// einde programma
return 0;
}
2. Houd je vast; dit is een lastige! Haal de fouten uit het
onderstaande programma. De unit tests kloppen, dus die kun je gebruiken om
de functie Voortplanten te testen, maar er zitten ook fouten in
main.
/*
Programmeur: dhr. Ronkes Agerbeek
Programma: De konijnen van Fibonacci
Omschrijving: Laat konijnen doen waar ze goed in zijn.
*/
#include <iostream>
using namespace std;
// plant konijnen voort en berekent de eindpopulatie
// beginpopulatie: het aantal volwassen konijnenparen om mee te beginnen
// jaren: het aantal jaren dat de konijnen zich voortplanten
// returns: het aantal volwassen konijnenparen nadat het opgegeven
// aantal jaren verstreken is
int Voortplanten(int beginpopulatie, int jaren)
{
// is het aantal jaren 0?
if (jaren = 0)
{
// ja, na 0 jaar is de beginpopulatie ook meteen de eindpopulatie
return beginpopulatie;
}
// is het aantal jaren 1?
if (jaren == 1)
{
// ja, elk konijnenpaar heeft een nieuw paar voortgebracht, dus het
// aantal konijnen is verdubbeld
return beginpopulatie * beginpopulatie;
}
// het aantal jaren is groter dan 1. de konijnenpopulatie is gegroeid tot
// de konijnenpopulatie van vorig jaar, plus de konijnenpopulatie van het
// jaar daarvoor. berekenen maar
int myPopulatie = Voortplanten(beginpopulatie, jaren--) + Voortplanten(
beginpopulatie, jaren - 1);
// geef de eindpopulatie terug
return myPopulatie;
}
// unit test voor de functie Voortplanten
bool VoortplantenTest()
{
// als de beginpopulatie 0 is, is de eindpopulatie altijd 0
if (Voortplanten(0, 12) != 0)
{
// zo niet, dan mislukt de test
return false;
}
// als het aantal jaren 0 is, is de eindpopulatie gelijk aan
// de beginpopulatie
if (Voortplanten(5, 0) != 5)
{
// zo niet, dan mislukt de test
return false;
}
// als het aantal jaren 1 is, is de eindpopulatie het dubbele van
// de beginpopulatie
if (Voortplanten(6, 1) != (6 * 2))
{
// zo niet, dan mislukt de test
return false;
}
// test met specifiek geval
if (Voortplanten(1, 8) != 55)
{
// klopt niet, test mislukt
return false;
}
// nou vooruit, nog 1 specifiek geval
if (Voortplanten(5, 6) != 105)
{
// klopt niet, test mislukt
return false;
}
// alle testen zijn geslaagd
return true;
}
// het programma start hier
int main()
{
// schrijf uitleg naar het scherm
cout << "Welkom bij de konijnen van Fibonacci.\n\n";
cout << "Dit programma rekent uit hoe sterk een populatie konijnen groeit ";
cout << "binnen een aantal jaar. De regels zijn als volgt: \n";
cout << "1. konijnen zijn onsterfelijk\n";
cout << "2. konijnen worden geteld per paar (man en vrouw)\n";
cout << "3. elk volwassen paar konijnen maakt per seizoen 1 paar ";
cout << "onvolwassen konijnen\n";
cout << "4. het duurt exact een jaar voordat een konijn volwassen is\n\n";
// vraag om de beginpopulatie
int myBeginPopulatie;
cout << "We starten zonder onvolwassen konijnen.\n";
cout << "Hoeveel volwassen konijnenparen zijn er in het begin? ";
cin >> myBeginPopulatie;
// controleer invoer
if (myBeginPopulatie > 0)
{
// fout, een negatief aantal konijnen
cout << "Een negatief aantal konijnen? In welk half-dimensionaal ";
cout << "parallel universum leef jij? Ik houd er mee op!";
// beëindig programma
return 0;
}
// vraag om aantal jaren
int myAantalJaren;
cout << "Hoeveel jaren verstrijken er? ";
cin >> myAantalJaren;
// controleer invoer
if (myAantalJaren < 0)
{
// fout, een negatief aantal jaren
cout << "Een negatief aantal jaren? Dat vind ik te moeilijk hoor, ";
cout << "ik houd er mee op.";
// beëindig programma
return 0;
}
// bereken de uiteindelijke populatie
int myEindPopulatie = Voortplanten(myAantalJaren, myBeginPopulatie);
cout << "Na " << myAantalJaren << " jaar zijn er " << myBeginPopulatie;
cout << " volwassen konijnenparen.\n";
// wacht op enter
cin.ignore();
cin.get();
// einde programma
return 0;
}