Uitwerkingen Tentamen Inleiding Programmeren in C++ voor LS&Ters vrijdag 28 juni 2002 OPGAVE 1 a. double gem2 (double x, double y) { returm ( x + y ) /2; } // gem2 b. double gem4 (double x, double y, double u, double v) { return gem2 (gem2 (x,y), gem2 (u,v)); } // gem4 c. int wortel (double x) { int root = 0; while ( root * root <= x ) root++; return (root - 1); } // wortel d. bool controle (char woordje[5], char verhaal[100]) { int i, j; bool okee; for ( i = 0; i < 100-5+1; i++ ) { okee = true; for ( j = 0; j < 5; j++ ) if ( woordje[j] != verhaal[i+j] ) okee = false; if ( okee ) return true; } // for return false; } // controle OPGAVE 2 a. void wissel (double A[n], int i, int j) { double temp = A[i]; A[i] = A[j]; A[j] = temp; } // wissel b. int grootste (double A[n], int i, int j) { int k = i; for (l = i+1; l <= j; l++ ) if ( A[l] > A[k] ) k = l; return k; } // grootste c. void sorteer (double A[n]) { int k, m; for ( m = n-1; m > 0; m-- ) { k = grootste (A,0,m); wissel (A,k,m); } // for } // sorteer d. Loop herhaald door de rij heen. Bij het lopen vergelijk je elk buurpaar en wisselt de twee getallen om als ze verkeerd om staan. (Tijdens iedere ronde borrelt het grootste getal naar achteren; je kunt dus iedere ronde steeds een paar eerder stoppen.) OPGAVE 3 a. Globale variabelen gelden in het gehele programma, en worden helemaal bovenin aangemaakt. Locale variabelen gelden (tijdelijk) alleen in de functie waarin ze aangemaakt zijn. Variabelen kunnen call by value en call by reference worden meegegeven aan een functie. Bij call by value gaat alleen de waarde van de parameter naar de functie, alwaar een locale variabele deze waarde opvangt, en er met deze locale variabele wordt verder gerekend. De oorspronkelijk variabele behoudt zijn waarde. Bij call by reference gaat als het ware de variabele zelf naar de functie, en kan dan ook blijvend veranderd worden. Eigenlijk wordt het adres (de reference) doorgegeven. b. 2 4 17 12 1 3 17 c. 2 4 17 7 1 3 5 d. 0 0 0 12 0 3 5 e. Dat mag alleen als er GEEN & voor de parameter x van de functie brom staat. OPGAVE 4 a. void verste (int A[n][n], int& i, int& j) { int gr = 0, r, s; for ( r = 0; r < n; r++ ) for ( s = r+1; s < n; s++ ) if ( A[r][s] > gr ) { gr = A[r][s]; i = r; j = s; } // if } // verste b. void driehoek (int A[n][n]) { int i, j, k; bool okee = true; for ( i = 0; i < n; i++ ) for ( j = 0; j < n; j++ ) for ( k = 0; k < n; k++ ) if ( A[i][j] > A[i][k] + A[k][j] ) okee = false; if ( okee ) cout << "klopt" << endl; else cout << "klopt niet" << endl; } // driehoek c. int ga (int A[n][n], int i) { int tel = 0, vorige = 0; while ( A[i][(i+1)%n] > vorige ){ tel = tel + A[i][(i+1)%n]; vorige = A[i][(i+1)%n]; i = (i+1)%n; } // while return tel; } // ga