Vous êtes sur la page 1sur 4

Remarque IMPORTANTE : Pour les questions 1 à 6, cochez une case.

Toute réponse avec 2 cases cochées


et plus sera considerée fausse.

Exercice 1 Total : 9 Pts


Question 1
Dans l’entête d’une structure de répétition for on écrit :
for ( a ; b ; c )
b est :
□ la valeur finale de la boucle ?
□ la condition pour continuer ou terminer la boucle?
X 0.5 Pts
□ le nom de la boucle?
□ autre?
Question 2
Dans une structure de choix qui s’écrit :
if(A) L’instruction 2 est exécutée :
instruction 1 ;
else □ quelle que soit la valeur de A.
instruction 2 ; □ tout de suite après l’instruction 1
0.5 Pts □ si A est vrai
X□ si A est faux
Question 3
Quels résultats s’affichent après exécution des instructions suivantes :
int i = 10 ;
while( i > 0) Cocher la bonne réponse.
{
i = i - 4 ; □ 10 6 2
cout << i << ″ \t ″ ; 0.5 Pts X□ 6 2 -2
} □ 6 2

Question 4
Quelle est la valeur de A après exécution des instructions suivantes :
int i , A = 0 ;
for ( i=1 ; i< 6 ; i = i + 2 ) Cochez la bonne réponse :
{ □ A=7
A = A + i ; □ A=8
} 0.5 Pts □X A = 9
cout<<″A = ″<<A<<endl; □ A = 10
□ A = 11

Question 5
Après exécution des instructions suivantes :
int A, B , *P , T[ ] = { 3 , 7 , 3 , 9 , 10 , 3 } ;
1) A = * ( T + 3 ) ;
P = T + 1 ;
B = *( P + T [ 2 ] ) ;
Répondez aux questions suivantes :
Quelle est la valeur de A ? Quelle est la valeur de B ?
□ 3 □ 3
□ 7 1. Pts □ 7 1. Pts
□ 9
X □ 9
□ 10 □ 10
X
□ c’est une erreur □ C’est une erreur
2) A= T[ 2 ]++ ;
Quelle est la valeur de A ? Quelle la valeur de T [ 2 ] ?
□ 3
X □ 3
□ 9 □ 9
1. Pts 1. Pts
□ 4 □ 4
X
□ 10 □ 10
□ c’est une erreur □ C’est une erreur

Question 6
int A(1) , B(1) , C(1) ; A B C
A = B += C += A ; □ 1 1 1
□ 2 2 2
Quelles sont les valeurs de A, B, C après □ 1 2 3
exécution de l’instruction précédente : □ 3 2 1
□ 3 2 2
1. Pts □ 3 3 2
X
□ 3 3 3
□ Autres valeurs

Question 7
1- Suite à ces lignes de code :
int A = 2 , B = 3 , C = 4 , D , E , F ;
D = A + B * C > (A+B)*C ;

Quel est la valeur de D ? D=0 1. Pts

2- Suite à ces lignes de code :


E = A * C / B ;
F = C / B * A ; 1. Pts
D = B / C && ++A;
Quel sont les valeurs de E, F, D et A? E = 2. F = 2. D = 0. A = 2.

Exercice 2
Ecrire un programme qui :
1. déclare deux tableaux P[30] et I[30] sans les initialiser. Et un tableau d’entier A initialisé avec
les valeurs suivantes :
A[30]={ 108, 101, 32, 109, 105, 101, 117, 120, 32, 101, 115,
116, 32, 108, 39, 101, 110, 110, 101, 109, 105, 32, 100, 117, 32,
98, 105, 101, 110,0};
2. affiche les valeurs paires de A.
3. affiche les valeurs impaires de A.
4. affecte toutes les valeurs paires au tableau P et les valeurs impaires au tableau I.
5. affiche le nombre d’élément de P et le nombre d’élément de I.
6. Trier les éléments de P par ordre croissant.
7. Trier les éléments de I par ordre décroissant.
8. élimine les dédoublements du tableau P et affiche la nouvelle taille de P.
9. élimine les dédoublements du tableau I et affiche la nouvelle taille de I.
10. Fusionner les deux tableaux P et I dans un tableau unique, B, en gardant l’ordre croissant,
pendant la fusion

Total : 11 Pts
Exercice 2 Solution :

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
0.5 Pts ///Question 1: Declarations
int A[30]={108, 101, 32, 109, 105, 101, 117, 120 , 32, 101, 115, 116, 32,
0,
101, 110, 110, 101, 109, 105, 32, 100, 117, 32, 98, 105, 108, 39, 101,110
};
int P[30], I[30],B[30];
int i, j, k, Np, Ni, Nb, aide;

1. Pts ///Question 2 : afficher les nombres pairs


cout << "\n les valeurs pairs de A :\n";
for(i=0;i<30;i++)
if(A[i]%2==0)
cout<<A[i]<<"\t";
cout<<endl;
///Question 3 : afficher les nombres impairs
1. Pts cout << "\n les valeurs impairs de A :\n";
for(i=0;i<30;i++)
if(A[i]%2)
cout<<A[i]<<"\t";
cout<<endl;
system("pause");

///Question 4: affecter les nombres pairs à P et impairs à I


1. Pts for(i=0,Np=0,Ni=0;i<30;i++)
{
if(A[i]%2) I[Ni] = A[i], Ni++;
else P[Np] = A[i], Np++;
}

///Question 5 : afficher le nombres d'éléments pairs et le nombre d'élement impairs


1. Pts cout << "\nNp = " << Np << "\tNi = " << Ni << endl ;
system("pause");

///Qusetion 6 : tri par ordre croissant de P


1. Pts for ( i = 0 ; i < Np ; i++ )
for ( j = i ; j < Np ; j++ )
if ( P[i] > P[j] )
aide = P[i] , P[i] = P[j] , P[j] = aide ;

///Qusetion 7 : tripar ordre décroissant de I


1. Pts for ( i = 0 ; i < Ni ; i++ )
for ( j = i ; j < Ni ; j++ )
if ( I[i] < I[j] )
aide = I[i] , I[i] = I[j] , I[j] = aide ;

///Qusetion 8 : eliminer les dédoublement de P


1. Pts //Dedoublement
for ( i = 0 ; i < Np ; i++ )
if ( P[i] == P[i+1] )
{
for ( j = i + 1 ; j < Np ; j++ ) P[j] = P[j+1] ;
Np--;
i--;
}
//Nouvelle taille
0.5 Pts cout << "\n\n Nouvelle taille Np = " << Np << "\n" ;

///Qusetion 9 : eliminer les dédoublement de I


//Dedoublement
for ( i = 0 ; i < Ni ; i++ )
0.5 Pts if ( I[i] == I[i+1] )
{
for ( j = i + 1 ; j < Ni ; j++ ) I[j] = I[j+1] ;
Ni--;
i--;
}
//Npouvelle taille
0.5 Pts
cout << "\n\n Nouvelle Taille Ni = " << Ni << "\n" ;

///Question 10 : Fusion de P et I dans B avec ordre


2. Pts
i = 0 ;
j = Ni - 1 ;
k = 0 ;
while ( i < Np && j >= 0 )
{
if ( P[i] > I[j] )
{
B[k] = I[j] ;
j-- ;
k++ ;
}
else
{
B[k] = P[i];
i++ ;
k++ ;
}
}
if ( j < 0 ) while ( i < Np ) { B[k] = P[i] ; i++ ; k++ ; }
else if ( i >= Np ) while ( j >= 0 ) { B[k] = I[j] ; j-- ; k++ ;
}
else cout << "\n\nDanger revoir algo \n\n" ;

Nb = k;

return 0 ;
}