Université Cadi ayyad ـ ـ ـ اــ ـ ــض
Faculté des Sciences آـ ـ ــ ا ـ ـ ـ م ا ـ ـ ـ ـ ـ
Semlalia – Marrakech ــ اآــ
N° de table N° APOGEE Nom : …………………………………………... NOTE
…… ……………. Prénom : …………………………………………. ………
Né(e) le : …./……/… à : …………………….
Filière : SMP S4 Epreuve de : Contrôle de rattrapage d’Informatique Date : 26/06/2015
Durée 2h
Remarque IMPORTANTE : Pour les questions 2 à 7, cochez une seule case. Toute réponse avec 2 cases
cochées et plus sera considerée fausse.
EXERCICE 1 :
Etant données les lignes de programme suivants, répondez aux questions posées :
Question 1 :
int X = 10 , Y = 5 , Z = 10 , W; Donnez l’affichage obtenu :
W = X == ( Y = Z ) ;
W = 1 0.5 pts
cout << "W = " << W ;
int X = 6, Y = 5 , W; Donnez l’affichage obtenu :
W = X == Y++ ;
W = 0 Y = 6 1 pts
cout<< "W= " << W << "Y= " << Y ;
int X = 6, Y = 5 , Z = 10, W; Donnez l’affichage obtenu :
W = Z + (X == ++Y) ; 1 pts
W = 11 Y = 6
cout << "W= " << W << "Y= " << Y ;
Question 2 :
int X = 10 , Z ; Quelle est la valeur de W ? Quelle est la valeur de Z ?
bool W = -1; □ -1 □ 9
Z = X + W ; □ 0 □ 10
.5 pts .5 pts
cout << W << Z ; □ 1 □ 11
□ autre □ autre
exosup.com page facebook
Question 3 :
int A = - 1 ; Quelle est la valeur de A ?
do □ -1
{ □ 0
A = A + 1 ; □ 1 1 pts
} while( A > 0); □ Indéfini
cout << A ;
int A = - 1 ; Quelle est la valeur de A ?
while( A > 0) □ -1
{ □ 0 1 pts
A = A + 1 ; □ 1
} □ Indéfini
cout << A ;
Question 4 :
Cocher la bonne réponse pour s :
int i , s ;
for ( i = 0 , s = 0 ; I < 5 ; i++ ) □ s=0
{ □ s=2
if( i % 2 ) continue; □ s=4 1 pts
s = s + i; □ s=6
} □ s=8
cout << "s = "<< s <<endl;
Question 5:
int i, j; Quel est l’affichage obtenu :
for(i= 1 , j = 0 ; i% 7 ; i += 2) □ i=6 j=3
{ □ i= 7 j=3 1 pts
j++; □ i= 7 j=4
} □ i= 7 j=5
cout <<" i = "<< i <<" j = "<<j; □ i= 8 j=4
Question 6 :
Quelle est la valeur de A ? Quelle est la valeur de B ?
int T[][3]={1,2,3,4,5,6,7,8,9}; □ 1 □ 1
int A , B ; □ 2 □ 2
A = T[0][2] ; □ 3 0.5 pts □ 3 1 pts
B = *( *(T+1) + 1) ; □ 4 □ 4
cout << "A="<< A << "B="<< B ; □ 5 □ 5
exosup.com page facebook
Question 7 :
int T[3][4] , i , j , A , B ; Quelle est la valeur de A ? Quelle est la valeur de B ?
for ( i = 0 ; i< 3 ; i++) □ 1 □ 3
for ( j = 0 ; j < 4 ; j ++) □ 11 □ 10
T[i][j] = 10*i + j ; .5 pts .5 pts
□ 12 □ 13
A = *(*T + 1); □ 23 □ 23
B = *(*(T+2) + 3); □ erreur □ erreur
Question 8 :
main()
{
int T[ ] = { -4 , -3 ,- 2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 } ;
int *P, A , B;
P = T + 4 ; //Ligne 1
P+=T[5] ; //Ligne 2
++P ; //Ligne 3
P=P + T[0] ; //Ligne 4
++*P ; //Ligne 5
}
Pour chacune des lignes 1 à 5, vers quel élément de T « pointe » le pointeur P, et quelle est la valeur de *P ?
Exemple :
Ligne 1 : P pointe sur T[4] et *P vaut 0
Donnez les réponses pour les autres lignes :
.25 pts
Ligne 2 : .5 pts P pointe sur T[5] et *P vaut 1
Ligne 3 : .5 pts P pointe sur T[6] et *P vaut 2 .25 pts
Ligne 4 : .5 pts P pointe sur T[2] et *P vaut −2 .25 pts
Ligne 5 : .5 pts P pointe sur T[2] et *P vaut −1
.25 pts
EXERCICE II
Réaliser un programme qui permet de :
1) Déclarer un tableau d’entiers T, de taille N = 30.
2) Affecter des valeurs aléatoires, comprises entre 1 et 100, aux éléments du tableau T.
3) Afficher le tableau T.
dans la suite des questions, ne plus afficher T, car aucun autre affichage de T n’est demandé.
4) Donner le nombre d’éléments impairs de T.
5) Eliminer les dédoublements des éléments du tableau; et donner N, la nouvelle taille du tableau.
6) Réorganiser le tableau de telle façon à grouper les éléments impairs dans la première partie et les
éléments pairs dans la deuxième partie de tableau T.
exosup.com page facebook
#include<iostream>
#include<cstdlib> .25 pts
#include<ctime>
using namespace std;
int main()
{
///Question 1 .5 pts
int T[30],i,j,k,N=30, Ni,C;
///Question 2 .5 pts
srand(time(0));
for(i=0;i<N;i++) T[i]=rand()%100+1; 1. pts
///Question 3
for(i = 0;i < N; i++) cout <<T[i]<< "\t"; .75 pts
///Question 4
for(i=0,Ni=0;i<N;i++) 1 pts
if(T[i]%2)
Ni++;
cout << "\nNombre d'éléments impairs : " << Ni <<endl; .5 pts
///Question 5
Proposition 1 Proposition 2
for(i=0;i<N;i++) for(k=0,i=0;i<N;i++)
for(j=i+1;j<N;j++) {
if(T[i]==T[j]) for(test=0,j=i+1;j<N;j++)
1. pts { if(T[i]==T[j]) test=1;
for(k=j;k<N-1;k++) if(test==0)
T[k]=T[k+1]; T[k]=T[i], k++;
N--; }
j--; N = k;
}
cout << "\nNouvelle taille N de T : " << N <<endl;
///Question 6
Proposition 1 Proposition 2
i=0;
j=N-1; for(i=1;i<N;i++)
while(i<j) if(T[i]%2)
{ {
while(T[i]%2) i++; for(C=T[i],j=i;j>0;j--)
1.5 pts
while(T[j]%2==0) j--; T[j]=T[j-1];
if (i<j) T[0]=C;
C=T[i],T[i]=T[j],T[j]=C; }
}
return 0;
}
exosup.com page facebook