Control Continu S2 2018

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

Auteur : Mohamed Messabihi Université Abou Bakr Belkaïd - Tlemcen

Matière : Programmation et structures de données Faculté des Sciences


Date 15 Mars 2018 1ère Année MI
Durée 1h30 Semestre 2

Contrôle Continu
Aucun document n'est autorisé

Les solutions doivent être rédigées en C


Les appareils portables doivent être éteints et posés sur le bureau du surveillant

1 Affichage 7 pts. U25’


1. Qu’affichent les deux programmes suivants :
1 # include < stdio .h > 1 # include < stdio .h >
2 void Toto ( int * A , int n ) 2 void Loulou ( char *S , char c , int *P , int * n )
3 { 3 {
4 int a , * D =A , * F = & A [n -1]; 4 int i =0;
5 while ( D < F ) 5 * n =0;
6 { 6 while ( S [ i ]!= ' \0 ')
7 a = * F; 7 {
8 * F = *D ; 8 if ( S [ i ] == c )
9 * D = a; 9 *( P + (* n ) ++) = i ;
10 D ++; 10 i ++;
11 F - -; 11 }
12 } 12 }
13 } 13 int main () {
14 int main () 14 char S [100]= " Toto & Loulou " ;
15 { 15 char c = 'o ';
16 int i , A [10]={0 ,1 ,2 ,3 ,4 ,5 ,6}; 16 int i , n , T [10];
17 Toto (A , 6) ; 17 Loulou (S ,c ,T ,& n ) ;
18 for ( i =0; i <6; i ++) 18 for ( i = 0; i <n ; i ++)
19 printf ( " % d \ n " , *( A + i) ) ; 19 printf ( " % d \ n " , *( T + i ) ) ;
20 } 20 }

2. Que font les deux fonctions Toto et Loulou ? (deux lignes au maximum pour chacune d’entre elles.)

2 Union et intersection de deux tableaux 8 pts. U35’


On dispose de deux tableaux T et S d’entier à une seule dimension. Les tableaux T et S sont supposés
déjà triés dans l’ordre croissant % et sans doublons. La taille du tableau T est lt et celle du tableau S est ls.
Les variables lt et ls doivent être inférieures ou égales à la taille maximale des tableaux T et S (fixée ici à 100).
1. Écrire une fonction Tab_Union qui prend en entrée deux tableaux T et S ainsi que leurs tailles réelles
puis elle construit un tableau TuS de taille lTuS qui contient l’union des deux tableaux T et S. Le
tableau TuS doit rester trié par construction.
2. Écrire une fonction Tab_Intersection qui prend en entrée deux tableaux T et S ainsi que leurs tailles
réelles lt et ls puis elle construit un tableau TnS de taille lTnS qui contient l’intersection des deux
tableaux T et S. Le tableau TnS doit rester trié par construction.
Exemple :
T: 3 8 11 17 23 48 56 61 87 93 98 lt = 11.

S: 4 6 8 23 53 56 76 87 90 ls = 9.

TuS : 3 4 6 8 11 17 23 48 53 56 61 76 87 90 93 98 lTuS = 16.

TnS : 8 23 56 87 lTnS = 4.
1/2
3 Le tableau génératif 5 pts. U30’
Écrire une fonction Tab_Generatif qui prend en entrée un tableau T (à deux dimensions) et un nombre
d’étapes N, qui le rempli avec le chiffre 1, 2 et 3 en appliquant le principe suivant :
1. Au début, à l’étape 1 : la première case de la première ligne contient le chiffre 1.
2. Puis à chaque étape de la génération (c.-à-d, la ligne suivante), 1 est transformé en 1 2 3 (3 cases) , 2
est transformé en 3, et 3 est transformé en 1.
3. Toutes les autres cases sont initialisées à 0.
Exemple :

Etape 1 : 1
Etape 2 : 1 2 3
Etape 3 : 1 2 3 3 1
Etape 4 : 1 2 3 3 1 1 1 2 3
Etape 5 : 1 2 3 3 1 1 1 2 3 1 2 3 1 2 3 3 1
Etape 6 : 1 2 3 3 1 1 1 2 3 1 2 3 1 2 3 3 1 1 2 3 3 1 1 2 3 3 1 1 1 2 3
Etape 7 : ...

L’appelle de la fonction Tab_Generatif avec un nombre d’étapes égale à 6 nous permet donc d’obtenir
le tableau ci-dessous :

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 3 1 1 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 3 1 1 1 2 3 1 2 3 1 2 3 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 3 1 1 1 2 3 1 2 3 1 2 3 3 1 1 2 3 3 1 1 2 3 3 1 1 1 2 3

ZRemarque. Pour les deux derniers exercices :


1. On ne demande ni la saisie des tableaux ni leur affichage.
2. La manipulation des tableaux avec les crochets [] ou [][] est beaucoup plus simple et pratique que la
notation avec pointeurs.
3. On ne demande pas l’écriture de la fonction main pour tester les autres fonctions.

« Bon courage »

2/2

Vous aimerez peut-être aussi