Vous êtes sur la page 1sur 6

ROYAU M E D U M A RO C

Ministre de lducation nationale de lenseignement suprieur, de la formation des cadres et de la recherche scientique Prsidence du Concours National Commun 2011 Institut Nationale des Postes et Tlcomunications (INPT)

C ONCOURS N ATIONAL C OMMUN dAdmission aux

Grandes coles dIngnieurs Marocaines et Assimiles


Session 2011 PREUVE D I NFORMATIQUE
Dure 2 heures

F ILIRES : MP/ PSI/ TSI

Cette preuve comporte 5 pages au format A4, en plus de cette page de garde. Lusage de la calculatrice est interdit

preuve dInformatique Session 2011 Filire MP/ PSI/ TSI

Concours National Commun

Les candidats sont informs que la prcision des raisonnements algorithmiques ainsi que le soin apport la rdaction et la prsentation des copies seront des lments pris en compte dans la notation. Il convient en particulier de rappeler avec prcision les rfrences des questions abordes. Si, au cours de lpreuve, un candidat repre ce qui peut lui sembler tre une erreur dnonc, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives quil est amen prendre. Remarques gnrales : - Lpreuve se compose de deux problmes indpendants. - Toutes les instructions et les fonctions demandes seront crites en langage C. - Les questions non traites peuvent tre admises pour aborder les questions ultrieures.

P R O B L M E I : O P R AT I O N S S U R D E S E N S E M B L E S
M AT H M AT I Q U E S

Prambule Un ensemble mathmatique est un groupement dobjets distincts, appels lments de cet ensemble. La thorie des ensembles est ltude des proprits et des oprations sur des ensembles (appartenance, inclusion, runion, . . . ). Elle reprsente une branche essentielle des mathmatiques. Ce problme sintresse aux algorithmes ralisant quelques traitements sur des ensembles mathmatiques nis de nombres entiers. Notation dun ensemble ni dlments Si E est un ensemble ni de N lments (0 < N), e 0 , e 1 , . . . , e i , e i +1 , . . . , e N1 , alors E sera not ainsi E = {e 0 , e 1 , . . . , e i , e i +1 , . . . , e N1 }.

Partie A : Reprsentation des ensembles finis par des tableaux


Dans cette partie, il sagit de reprsenter par des tableaux, des ensembles nis dont les lments sont des nombres entiers strictement positifs.

page

1 sur 5

preuve dInformatique Session 2011 Filire MP/ PSI/ TSI

Concours National Commun

Appellations On appellera "Ensemble Tableau de taille N", tout tableau de N, (0 < N) entiers strictement positifs et tous diffrents. Ce tableau sera not T = {T[0], T[1], . . . , T[N 1]} On appellera un "Ensemble Tableau de taille N tri", tout "Ensemble Tableau de taille N", T, dont les lments sont tris par ordre croissant : (Pour tout i tel que 0 <= i < N 1, on a T[i] < T[i + 1]) Remarque Dans toutes les questions de la partie A, on suppose que N, N1 et N2 sont des constantes entires strictement positives dj dnies. Notation : On notera les N lments du tableau T ainsi T={T[0], T[1], . . . , T[N 1]} Question 1 : Vrication dun Ensemble Tableau Soi T un tableau dclar et initialis avec N entiers strictement positifs quelconques.

crire les instructions qui vrient si T est un "Ensemble Tableau de taille N".
Pour ce faire : -Dclarer une variable entire de nom "valide". - Affecter la valeur 1 la variable "valide" si T est un "Ensemble Tableau de taille N", ou 0 sinon Exemples : -Si N=4 et T = {3, 5, 2, 9} alors valide=1 (T est un "Ensemble Tableau de taille 4") -Si N=5 et T = {4, 8, 12, 4, 3} alors valide=0 (T nest pas un "Ensemble Tableau de taille 5") Question 2 : Appartenance un ensemble Tableau Soi T un "Ensemble Tableau de taille N" dclar et initialis et soit x une variable entire dclare et initialise avec un entier quelconque. crire les instructions qui afchent sur lcran lune des deux afrmations suivantes (a) ou (b) (dans les 2 cas, la variable x sera remplace par sa valeur lafchage) (a) "x appartient T" si x est un lment du tableau T. (b) "x nappartient pas T" si x nest pas un lment de T. Exemples : -Si N = 4, T = {3, 5, 2, 9} et x = 2 alors on afchera : "2 appartient T" -Si N = 3, T = {12, 6, 9} et x = 3 alors on afchera : "3 nappartient pas T" Question 3 : Tri dun Ensemble Tableau Soit T un "Ensemble Tableau de taille N" suppos dclar et initialis. crire les instructions qui permettent de trier les lments du tableau T par ordre croissant. Exemple : -Si N = 4 et T = {3, 1, 12, 8} aprs les instructions de tri, on aura T = {1, 3, 8, 12} Remarque concernant les questions suivantes de la partie A (question 4 et question 5)

page

2 sur 5

preuve dInformatique Session 2011 Filire MP/ PSI/ TSI

Concours National Commun

On suppose avoir dj dclar et initialis 2 variables globales T1 et T2 avec T1 est un "Ensemble Tableau de taille N1 tri" et T2 un "Ensemble Tableau de taille N2 tri " Question 4 : Inclusion dun ensemble dans un autre On dit que T1 est inclus dans T2 si tout lment de T1 est aussi lment de T2. crire la fonction dentte : int T1inclusdansT2() qui retourne 1 si T1 est inclus dans T2 ou retourne 0 sinon. Exemple : - Si T1 = {4, 9, 17} et T2 = {2, 4, 5, 9, 17, 19} alors lappel T1inclusdansT2() retourne 1 - Si T1 = {1, 8, 10} et T2 = {1, 4, 10, 6} alors lappel T1inclusdansT2() retourne 0 Question 5 : Union de deux ensembles tableaux tris On dit quun tableau T de taille N est lunion de T1 et T2 si T est un"Ensemble Tableau de taille N tri" compos de tous les lments de T1 en plus de tous les lments de T2 Soit T un tableau de taille N dj dclar (N est la taille du tableau union de T1 et T2). crire les instructions ncessaires pour que T soit lunion de T1 et T2 Exemple : Si T1 = {2, 14, 28, 75} et T2 = {1, 6, 14, 28} alors T = {1, 2, 6, 14, 28, 75}

Partie B : Utilisation des listes chanes


Dans cette partie, on se propose de reprsenter des ensembles nis dentiers strictement positifs tris par ordre croissant par des listes chanes dnies en langage C comme suit typedef struct ens { int nombre ; //un nombre entier strictement positif lment de lensemble struct ens *suiv ; // ladresse de llment suivant } ensembleListe ; Appellation On appellera "Ensemble Liste dadresse p" une liste chane dlments de type ensembleListe (dnie plus haut) et possdant les proprits suivantes : - Le premier lment a ladresse p. - Le dernier lment a dans son champ suiv la valeur NULL - Pour tout lment dadresse el de la liste chane, tel que (el->suiv !=NULL), on a (0< el->nombre < ((el->suiv) ->nombre) (liste trie par ordre croissant de nombres) Exemple Lensemble {3, 7, 10, 36} sera reprsent par lEnsemble Liste dadresse p comme suit :

nombre : 3 suiv

nombre : 7 suiv

nombre : 10 suiv

nombre : 36 NULL

page

3 sur 5

preuve dInformatique Session 2011 Filire MP/ PSI/ TSI

Concours National Commun

Question 6 : Insertion dun lment dans la liste chane trie Soit la dclaration globale suivante : ensembleListe *p ; On suppose avoir dnie et insr des lments dans l "Ensemble Liste dadresse p" ( p est dclar plus haut). crire une fonction dentte : void inserer(int val) qui permet dinsrer sa place llment de type ensembleListe dans l "Ensemble Liste dadresse p" pour que la liste reste toujours trie par ordre croissant. Cet lment a dans son champ nombre, la valeur val (paramtre de la fonction), en plus, on suppose que : (val>p->nombre)( voir rappel, remarque et exemple) Rappel : Lappel de la fonction de la bibliothque du langage C malloc(n) ( n tant un entier positif), permet dallouer n octets dans la mmoire dynamique et retourne ladresse mmoire du block allou. La fonction malloc est dnie dans le chier de la bibliothque stdlib.h Remarque - Si le paramtre val est la valeur du champ nombre dun lment qui existe dj dans la liste, aucun lment ne sera insr. Exemple : Soit l "Ensemble Liste dadresse p" suivant : p 2 suiv 3 suiv 5 suiv 7 suiv 9 suiv 12 suiv 98 NULL

Aprs lappel de la fonction inserer(8), l "Ensemble Liste dadresse p" devient :

2 suiv

3 suiv

5 suiv

7 suiv

8 suiv

9 suiv

12 suiv

98 NULL

P R O B L M E I I : D I S TA N C E D E H A M M I N G

La distance de Hamming, dnie par Richard Hamming permet de quantier la diffrence entre deux squences de symboles. Elle est utilise en informatique et en tlcommunications pour compter le nombre de bits altrs dans la transmission dun message dune longueur donne. Dans ce problme, on se propose dimplmenter des fonctions pour calculer la distance de Hamming

page

4 sur 5

preuve dInformatique Session 2011 Filire MP/ PSI/ TSI

Concours National Commun

Question 1 : Distance de Hamming entre deux chanes de caractres La distance de Hamming entre deux chanes de caractres de mmes longueurs est gale au nombre de caractres, la mme position, qui sont diffrents. Exemples : - La distance de Hamming entre "sure" et "cure" est 1, - la distance de Hamming entre "aabbcc" et "xaybzc" est 3. crire une fonction dentte : int distanceH(char S1[ ], char S2[ ], int M) qui calcule et retourne la distance de Hamming entre S1 et S2 ( Les paramtres S1 et S2 sont deux chanes de caractres de mme longueur M et on suppose que le paramtre M est strictement positif) Question 2 : Distance de Hamming dun langage On appellera langage, un tableau de chanes de caractres toutes de mmes longueurs. La distance de Hamming dun langage est gale au minimum des distances de Hamming entre deux chanes de caractres de ce langage diffrentes deux deux. Exemple : - Si langage={"aabb", "xayy", "tghy", "xgyy"} , sa distance de Hamming est de 1 crire une fonction dentte : int distanceH langage(char[NB][L] langage), qui retourne la distance de Hamming de son paramtre langage (Le paramtre langage est un tableau de NB chanes de caractres toutes de mme longueur L, NB et L sont 2 constantes entires strictement positives dj dnies) Question 3 : Distance de Hamming entre 2 nombres entiers positifs La distance de Hamming entre 2 nombres entiers positifs est le nombre de bits distincts dans leurs reprsentations binaires (voir exemple) Exemple : la distance de Hamming entre les nombres 7 et 4 est 2 (7 est reprsent en binaire sur un octet (8 bits) par 00000111 et 4 est reprsent en binaire par 00000100) Question 3-a : crire une fonction dentte : void binaire(char *bin ,int N) qui met dans la chane dadresse bin, la reprsentation binaire de N ( On suppose que 0< =N <256 ) Question 3-b : crire une fonction dentte : int distanceNombre(int A, int B) qui calcule et retourne la distance de Hamming entre les nombre A et B ( On suppose que 0 <= A < 256 et 0 <= B < 256)

F I N D E L P R E U V E

page

5 sur 5