Vous êtes sur la page 1sur 4

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
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
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.
#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;
}

Vous aimerez peut-être aussi