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; }