IFT 339: Structures de données
Daniel Lemire, Ph.D.
Exercices 0 : Révision du C++ et l'enfer des pointeurs! (avec un peu de passage par référence)
Dire ce que donnera le code suivant:
for (int a = 1; a <= 1; a++) cout << a++; cout << a;
Que va donner 54 % 7?
Que va va valoir d dans double d = 5 / 2;
Qu'est-ce que va donner
void foo(int j) {
int x = 5 ;
if( j == 0 ) {
int x ;
x = 3 ; }
return x ;
}
Que va afficher le code suivant
int n=1; if (n=0) cout << "n = 0"; else cout << "n = " << n;
Que va afficher
for (int i=0; i<10; i++); cout << i%2 << " "; }
Est-ce que le code suivant est robuste? Expliquez!
int number=1;
while (true) {
cout << number;
if (number == 3) break;
number += _value; }
Qu'est-ce que va produire le code suivant...
int i = 2.5; do { cout i * 2; } while (i > 3 && i < 10);
Expliquer le code suivant...
#include <iostream>
#include <new>
using namespace std ;
int main() {
int *p = new(nothrow) int ;
if( p!=0 ) {
delete p ;
*p = 99 ;
cout << 12 << endl ; }
}
Qu'est-ce qui ne va pas avec le code suivant...
Matrix *strange( Matrix input ) {
Matrix *workMatrixP = new(nothrow) Matrix ;
*workMatrixP = input ;
for( int i = 0 ; i < workMatrixP->rows() ; ++i )
for( int j = 0 ; j < workMatrixP->cols() ; ++j )
if( i != j ) workMatrixP->set(i,j, 0.0) ;
return workMatrixP ; }
Qu'est-ce qui ne va pas avec le code suivant...
for( int i = 0 ; i < N ; ++i ) {
double *p = new(nothrow) double ;
if( p== 0 ) { return false ; }
*p = A[i] ; A[i] = B[i] ; B[i] = *p ; }
Supposons que je veux copier un chaîne de caractères en utilisant le code suivant... qu'est-ce qui ne va pas?
char *targetP ;
while( *sourceP ) {
*targetP = *sourceP ;
++targetP; ++sourceP ;
}
*targetP = '\0' ;
Qu'est-ce qui ne va pas avec ce code...
double *weird( double a, double b ) {
double c ;
c = pow( a*a + b*b, 0.5 ) ;
return &c ;
}
Est-ce que quelque chose ne va pas avec le code suivant?
int &odd( int &r, int i ) {
r = i*i ;
return r ; }
Que sera x dans
ClassList *(x[N]) ;
Que sera x dans
ClassList ( *x )[N] ;
Que sera x dans
const char* w, x, y ;
Si nous avons... const int *p = x ; int *const q = y ; alors commentez chacune des affirmations suivantes...
1.*p = 10 ;
2.*q = 10
3.p = x;
4.q = y ;