Faculteit der Exacte Wetenschappen tentamen Inleiding Programmeren Vrije Universiteit 22 maart 2004, tijdsduur: 3 uur ------------------------------------------------------------------------------- UITWERKINGEN Opgave 1. a) . xxx xxx . yyy xxx:yyy .:zzz yyy xxx:yyy .:zzz:qqq qqq .:zzz:qqq b) double sommeerTermen (int x, int n) { int noemer = 1; double teken = +1.0, macht = x*x, resultaat = 0.0; for (int teller = 1; teller <= n; teller++) { teken = -teken; noemer *= 2; macht *= x; resultaat += teken * teller / noemer * macht; } return resultaat; } N.B. Als 'teken' van het type int is werkt deze oplossing niet omdat de uitkomst van teken*teller/noemer dan 0 wordt. c) boolean meerPositiefDanNegatief (int[][] matrix) { int aantalPositievegetallen, aantalNegatieveGetallen; for (int j = 0; j < matrix[0].length; j++) { aantalPositieveGetallen = 0; aantalnegatieveGetallen = 0; for (int i = 0; i < matrix.length; i++) { if (matrix[i][j] < 0) { aantalNegatieveGetallen +=1; } else if (matrix[i][j] > 0) { aantalPositieveGetallen +1; } } if aantalPositieveGetallen <= aantalNegatieveGetallen) { return false; } } return true; } d) 2 3 4 3 1 3 6 3 6 2 Opgave 2. class Student { String naam; double ectsPerJaar; int aantalJaarIngeschreven. // De constructors en methodes doen er voor deze opgave niet toe. } class Faculteit { static final int MAX_AANTAL_STUDENTEN = 1500; Student[] studentArray; int aantalStudenten; ... } a) in de class Faculteit: Faculteit () { studentenArray = new Student[MAX_AANTAL_STUDENTEN]; aantalStudenten = 0; } void voegToe (Student student) { studentArray[aantalStudenten] = student; aantalStudenten += 1; } b) in de class Student: static final int GRENS_GOED_ECTS_PER_JAAR = 55; // 55.0 is ook goed boolean goed () { return ectsPerJaar > GRENS_GOED_ECTS_PER_JAAR; } in de class Faculteit: int aantalGoedeStudenten () { int resultaat = 0; for (int i = 0; i < aantalStudenten; i++) { if (studentenArray[i].goed()) { resultaat += 1; } } return resultaat; } c) in de class Student: static final int GRENS_TOP_AANTAL_JAAR = 4; boolean top () { return goed() && aantalJaarIngeschreven >= GRENS_TOP_AANTAL_JAAR; } in de class Faculteit: Faculteit selectie () { Faculteit resultaat = new Faculteit(); for (int i = 0; i < aantalStudenten; i++) { if (studentenArray[i].top()) { resultaat.voegToe(studentenArray[i]); } } return resultaat; } Opgave 3. a) int over (int n, int k) { if (n == k || k == 0) { return 1; } return over(n-1, k) * over(n-1, k-1); } b) String voegHaakjesToe (String s, int i) { if (i == s.length()) { return ""; } char c = s.charAt(i); int n = c - '0'; return aantalKeer("(", n) + c + voegHaakjesToe(s, i+1) + aantalKeer(")", n) ; }