Faculteit der Exacte Wetenschappen Tentamen Inleiding Programmeren Vrije Universiteit 25 maart 2002 ------------------------------------------------------------------------------- UITWERKINGEN Opgave 1. a) A B A D E E E E b) boolean bijzonder (int getal) { int som = 0; for (int i = 1; i < getal; i++) { if (getal % i == 0) { som += i; } } return som > getal; } c) int[][] som (int[][] a, int[][] b) { // gegeven is a.length >= b.length en a[0].length >= b[0].length int[][] resultaat = new int[a.length][a[0].length]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[0].length; j++) { resultaat[i][j] = a[i][j]; if (i < b.length && j < b[0].length) { resultaat[i][j] += b[i][j]; } } } return resultaat; } d) 5 3 2 2 2 7 2 9 4 11 Opgave 2. a) class SongtitelRij { static final int MAX_AANTAL_SONGTITELS = 1000; String[] songtitelArray; int aantalSongtitels; SongtitelRij () { songtitelArray = new String[MAX_AANTAL_SONGTITELS]; aantalSongtitels = 0; } void voegToe (String songtitel) { sontitelArray[aantalSongtitels] = songtitel; aantalSongtitels +=1; } } class AudioCD { int jaartalVanEerstePersing; String naamAlbum; SongtitelRij songtitelRij; AudioCD (int jaar, String album) { jaartalVanEerstePersing = jaar; naamAlbum = album; songtitelRij = new SongtitelRij(); } void voegSongtitelToe (String songtitel) { songtitelRij.voegToe(songtitel); } } Het doet er niet toe welke waarde aan de constante die de grootte van het String-Array bepaalt wordt gegeven. b) class AudioRack { static final int MAX_AANTAL_AUDIO_CDS = 100; AudioCD [] cdArray; int aantalAudioCDs; AudioRack () { cdArray = new AudioCD[MAX_AANTAL_AUDIO_CDS]; aantalAudioCDs = 0; } void voegtoe (AudioCD audioCD) { cdArray[aantalAudioCDs] = audioCD; aantalAudioCDs +=1; } } c) Om dit probleem gestructureerd op te kunnen lossen worden er twee hulpmethodes in de class AudioCD gemaakt. Een methode die in de audio-CD alle songtitels vindt waarin het woord "love" voorkomt en deze songtitels retourneert in een SongtitelRij. SongtitelRij zoek () { SongTitelRij resultaat = new SongtitelRij(); for (int i = 0; i < aantalSongtitels; i++) { if (songtitelRij[i].indexOf("love") != -1) { resultaat.voegToe(songtitelRij[i]); } } return resultaat; } en een methode die alle songtitels in een SongtitelRij-object toevoegt aan de AudioCD. void voegToe (SongtitelRij songtitelRij) { for (int i = 0; i < songtitelRij.aantalSongtitels; i++) { voegToe(songtitelRij.songtitelArray[i]); } } De methode zoek() in de class AudioRack vanwege de gestructureerde aanpak nu heel eenvoudig. AudioCD zoek () { AudioCD resultaat = new AudioCD(2002, "tentamen IP2 25-03-2002"); for (int i = 0; i < aantalAudioCDs; i++) { resultaat.voegToe(cdArray[i].zoek()); } return resultaat; } Opgave 3. a) String reverse (String s) { if (s.equals("")) { return ""; } return reverse(s.substring(1)) + s.charAt(0); } b) int stirling (int k, int r) { if (k != 0 && r ==0 || k == 0 && r != 0) { return 0; } if (k == r) { return 1; } /* alternatief if (k == r) { return 1; } if (r ==0 || k == 0) { return 0; } */ return r * stirling(k-1, r) + stirling(k-1, r-1); }