Faculteit der Exacte Wetenschappen Tentamen Inleiding Programmeren Vrije Universiteit 18 december 2000, tijdsduur : 3 uur ------------------------------------------------------------------------------- Opgave 1. a) 5 tekst 6 tekst! 6 tekst! b) String soortDag (int dag) { switch (dag) { case ZATERDAG : case ZONDAG : return "weekend"; case VRIJDAG : return "bijna weekend"; default : return "werkdag"; } } Het is geen probleem als de labels eindigen met overbodige break-statements. Het alternatief om de uitkomst in een locale hulpvariabele te zetten in het switch-statement is ook correct. Er worden punten afgetrokken als er bij zaterdag en zondag niet gebruik gemaakt wordt van doorvallen en indien maandag t/m donderdag niet achter default staan. c) int[][] submatrix (int[][] m, int n, int startRij, int startKolom) { int[][] resultaat = new int[n][n]; for (int i = startRij; i < startRij+n; i++) { for (int j = startKolom; j < startKolom+n; j++) { resultaat[i-startRij][j-startKolom] = m[i][j]; } } return resultaat; } d) -2 4 -6 4 -2 0 -6 0 Opgave 2. a) class Postzegel { String naamLand; double waarde; // int waarde is ook goed boolean gestempeld; Postzegel () { naamLand = ""; // of new String() waarde = 0.0; gestempeld = false; // of true, beide waarden zijn goed } Postzegel (String naamLand, double waarde, boolean gestempeld) { this.naamLand = naamLand; this.waarde = waarde; this.gestempeld = gestempeld; } } b) class PostzegelVerzameling { static final int MAX_AANTAL_POSTZEGELS = 10000; Postzegel[] postzegelArray; int aantalPostzegels; PostzegelVerzameling () { postzegelArray = new Postzegel[MAX_AANTAL_POSTZEGELS]; aantalPostzegels = 0; } void voegToe (Postzegel postzegel) { postzegelArray[aantalPostzegels] = postzegel; aantalPostzegels +=1; } } c) // in de class Postzegel boolean uitgegevenDoor (String naamLand) { return this.naamLand.equals(naamLand); } // in de class PostzegelVerzameling PostzegelVerzameling zoek (String naamLand) { PostzegelVerzameling resultaat = new PostzegelVerzameling(); for (int i = 0; i < aantalPostzegels; i++) { if (postzegelArray[i].uitgegevenDoor(naamLand)) { resultaat.voegToe(postzegelArray[i]); } } return resultaat; } Opgave 3. a) int aantalCijfers (int getal) { if (getal < 10) { return 1; } return 1 + aantalCijfers(getal / 10); } b) boolean binarySearch (int[] rij, int begin, int eind, int x) { if (eind < begin) { // rij met 0 getallen return false; } int midden = (begin + eind) / 2; if (x < rij[midden]) { return binarySearch(rij, begin, midden-1, x); } else if (x == rij[midden]) { return true } else { // (x > rij[midden]) { return binarySearch(rij, midden+1, eind, x); } }