Grandes Écoles d Ingénieurs Marocaines et Assimilées

Documents pareils
Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Bases de programmation. Cours 5. Structurer les données

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

UE Programmation Impérative Licence 2ème Année

Représentation d un entier en base b

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Cours d initiation à la programmation en C++ Johann Cuenin

Les arbres binaires de recherche

Compression de Données - Algorithme de Huffman Document de Conception

Les structures de données. Rajae El Ouazzani

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Conventions d écriture et outils de mise au point

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Algorithmique, Structures de données et langage C

Les chaînes de caractères

Le prototype de la fonction main()

Chap III : Les tableaux

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Les structures. Chapitre 3

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Travaux Dirigés n 1 : chaînes de caractères

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

I. Introduction aux fonctions : les fonctions standards

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Informatique Générale

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

4. Les structures de données statiques

Programmation C. Apprendre à développer des programmes simples dans le langage C

Architecture des Systèmes d Information Architecture des Systèmes d Information

Cours d Algorithmique et de Langage C v 3.0

L exclusion mutuelle distribuée

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Introduction au langage C

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Cours de Programmation Impérative: Zones de mémoires et pointeurs

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Le langage C. Séance n 4

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Chapitre 1 : La gestion dynamique de la mémoire

Initiation. àl algorithmique et à la programmation. en C

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Chapitre 2. Eléments pour comprendre un énoncé

1.6- Génération de nombres aléatoires

Langage SQL : créer et interroger une base

Programmation C++ (débutant)/instructions for, while et do...while

Rappels Entrées -Sorties

TP1. Outils Java Eléments de correction

Chapitre 10 Arithmétique réelle

Quelques algorithmes simples dont l analyse n est pas si simple

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Algorithmique et Programmation, IMA

Premiers Pas en Programmation Objet : les Classes et les Objets

Licence Sciences et Technologies Examen janvier 2010

Java Licence Professionnelle CISII,

TP3 : Manipulation et implantation de systèmes de fichiers 1

Programmation impérative

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Initiation à la programmation en Python

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Entraînement au concours ACM-ICPC

Projet Active Object

TP : Gestion d une image au format PGM

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Les fichiers. Chapitre 4

Algorithme. Table des matières

Utilisation d objets : String et ArrayList

Transmission d informations sur le réseau électrique

ARBRES BINAIRES DE RECHERCHE

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

Algorithmique et programmation : les bases (VBA) Corrigé

INITIATION A LA PROGRAMMATION

Programmation en langage C

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Création et Gestion des tables

REALISATION d'un. ORDONNANCEUR à ECHEANCES

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

(51) Int Cl.: H04L 29/06 ( ) G06F 21/55 ( )

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

V- Manipulations de nombres en binaire

Logiciel de Base. I. Représentation des nombres

GESTION DES FICHIERS C/UNIX

Transcription:

R O Y A U M E D U M A R O C Ministère de l éducation nationale de l enseignement supérieur, de la formation des cadres et de la recherche scientifique Présidence du Concours National Commun 2011 Institut Nationale des Postes et Télécomunications (INPT) CONCOURS NATIONAL COMMUN d Admission aux Grandes Écoles d Ingénieurs Marocaines et Assimilées Session 2011 ÉPREUVE D INFORMATIQUE Durée 2 heures FILIÈRES : MP/ PSI/ TSI Cette épreuve comporte 5 pages au format A4, en plus de cette page de garde. L usage de la calculatrice est interdit

Les candidats sont informés que la précision des raisonnements algorithmiques ainsi que le soin apporté à la rédaction et à la présentation des copies seront des éléments pris en compte dans la notation. Il convient en particulier de rappeler avec précision les références des questions abordées. Si, au cours de l épreuve, un candidat repère ce qui peut lui sembler être une erreur d énoncé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu il est amené à prendre. Remarques générales : - L épreuve se compose de deux problèmes indépendants. - Toutes les instructions et les fonctions demandées seront écrites en langage C. - Les questions non traitées peuvent être admises pour aborder les questions ultérieures. P R O B L È M E I : O P É R A T I O N S S U R D E S E N S E M B L E S M A T H É M A T I Q U E S Préambule Un ensemble mathématique est un groupement d objets distincts, appelés éléments de cet ensemble. La théorie des ensembles est l étude des propriétés et des opérations sur des ensembles (appartenance, inclusion, réunion,... ). Elle représente une branche essentielle des mathématiques. Ce problème s intéresse aux algorithmes réalisant quelques traitements sur des ensembles mathématiques finis de nombres entiers. Notation d un ensemble fini d éléments Si E est un ensemble fini de N éléments (0 < N), e 0,e 1,...,e i,e i+1,...,e N 1, alors E sera noté ainsi E = {e 0,e 1,...,e i,e i+1,...,e N 1 }. Partie A : Représentation des ensembles finis par des tableaux Dans cette partie, il s agit de représenter par des tableaux, des ensembles finis dont les éléments sont des nombres entiers strictement positifs. p a g e 1 s u r 5

Appellations On appellera "Ensemble Tableau de taille N", tout tableau de N,(0 < N) entiers strictement positifs et tous différents. 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 éléments sont triés 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 entières strictement positives déjà définies. Notation : On notera les N éléments du tableau T ainsi T={T[0],T[1],...,T[N 1]} Question 1 : Vérification d un Ensemble Tableau Soi T un tableau déclaré et initialisé avec N entiers strictement positifs quelconques. Écrire les instructions qui vérifient si T est un "Ensemble Tableau de taille N". Pour ce faire : -Déclarer une variable entière 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 n est pas un "Ensemble Tableau de taille 5") Question 2 : Appartenance à un ensemble Tableau Soi T un "Ensemble Tableau de taille N" déclaré et initialisé et soit x une variable entière déclarée et initialisée avec un entier quelconque. Écrire les instructions qui affichent sur l écran l une des deux affirmations suivantes (a) ou (b) (dans les 2 cas, la variable x sera remplacée par sa valeur à l affichage) (a) "x appartient à T" si x est un élément du tableau T. (b) "x n appartient pas à T" si x n est pas un élément de T. Exemples : -Si N = 4, T = {3,5,2,9} et x = 2 alors on affichera : "2 appartient à T" -Si N = 3, T = {12,6,9} et x = 3 alors on affichera : "3 n appartient pas à T" Question 3 : Tri d un Ensemble Tableau Soit T un "Ensemble Tableau de taille N" supposé déclaré et initialisé. Écrire les instructions qui permettent de trier les éléments du tableau T par ordre croissant. -Si N = 4 et T = {3, 1, 12, 8} après 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) p a g e 2 s u r 5

On suppose avoir déjà déclaré 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 d un ensemble dans un autre On dit que T1 est inclus dans T2 si tout élément de T1 est aussi élément de T2. Écrire la fonction d entête : int T1inclusdansT2() qui retourne 1 si T1 est inclus dans T2 ou retourne 0 sinon. - Si T1 = {4, 9, 17} et T2 = {2, 4, 5, 9, 17, 19} alors l appel T1inclusdansT2() retourne 1 - Si T1 = {1, 8, 10} et T2 = {1, 4, 10, 6} alors l appel T1inclusdansT2() retourne 0 Question 5 : Union de deux ensembles tableaux triés On dit qu un tableau T de taille N est l union de T1 et T2 si T est un"ensemble Tableau de taille N trié" composé de tous les éléments de T1 en plus de tous les éléments de T2 Soit T un tableau de taille N déjà déclaré (N est la taille du tableau union de T1 et T2). Écrire les instructions nécessaires pour que T soit l union de T1 et T2 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 chaînées Dans cette partie, on se propose de représenter des ensembles finis d entiers strictement positifs triés par ordre croissant par des listes chaînées définies en langage C comme suit typedef struct ens { int nombre ; //un nombre entier strictement positif élément de l ensemble struct ens *suiv ; // l adresse de l élément suivant } ensembleliste ; Appellation On appellera "Ensemble Liste d adresse p" une liste chaînée d éléments de type ensembleliste (définie plus haut) et possédant les propriétés suivantes : - Le premier élément a l adresse p. - Le dernier élément a dans son champ suiv la valeur NULL - Pour tout élément d adresse el de la liste chaînée, tel que (el->suiv!=null), on a (0< el->nombre < ((el->suiv) ->nombre) (liste triée par ordre croissant de nombres) Exemple L ensemble {3,7,10,36} sera représenté par l Ensemble Liste d adresse p comme suit : p nombre : 3 nombre : 7 nombre : 10 nombre : 36 suiv suiv suiv NULL p a g e 3 s u r 5

Question 6 : Insertion d un élément dans la liste chaînée triée Soit la déclaration globale suivante : ensembleliste *p ; On suppose avoir définie et inséré des éléments dans l "Ensemble Liste d adresse p" ( p est déclaré plus haut). Écrire une fonction d entête : void inserer(int val) qui permet d insérer à sa place l élément de type ensembleliste dans l "Ensemble Liste d adresse p" pour que la liste reste toujours triée par ordre croissant. Cet élément a dans son champ nombre, la valeur val (paramètre de la fonction), en plus, on suppose que : (val>p->nombre)( voir rappel, remarque et exemple) Rappel : L appel de la fonction de la bibliothèque du langage C malloc(n) ( n étant un entier positif), permet d allouer n octets dans la mémoire dynamique et retourne l adresse mémoire du block alloué. La fonction malloc est définie dans le fichier de la bibliothèque stdlib.h Remarque - Si le paramètre val est la valeur du champ nombre d un élément qui existe déjà dans la liste, aucun élément ne sera inséré. Soit l "Ensemble Liste d adresse p" suivant : p 2 3 5 7 9 12 98 suiv suiv suiv suiv suiv suiv NULL Après l appel de la fonction inserer(8), l "Ensemble Liste d adresse p" devient : p 2 3 5 7 8 9 12 98 suiv suiv suiv suiv suiv suiv suiv NULL P R O B L È M E I I : D I S T A N C E D E H A M M I N G La distance de Hamming, définie par Richard Hamming permet de quantifier la différence entre deux séquences de symboles. Elle est utilisée en informatique et en télécommunications pour compter le nombre de bits altérés dans la transmission d un message d une longueur donnée. Dans ce problème, on se propose d implémenter des fonctions pour calculer la distance de Hamming p a g e 4 s u r 5

Question 1 : Distance de Hamming entre deux chaînes de caractères La distance de Hamming entre deux chaînes de caractères de mêmes longueurs est égale au nombre de caractères, à la même position, qui sont différents. Exemples : - La distance de Hamming entre "sure" et "cure" est 1, - la distance de Hamming entre "aabbcc" et "xaybzc" est 3. Écrire une fonction d entête : int distanceh(char S1[ ], char S2[ ], int M) qui calcule et retourne la distance de Hamming entre S1 et S2 ( Les paramètres S1 et S2 sont deux chaînes de caractères de même longueur M et on suppose que le paramètre M est strictement positif) Question 2 : Distance de Hamming d un langage On appellera langage, un tableau de chaînes de caractères toutes de mêmes longueurs. La distance de Hamming d un langage est égale au minimum des distances de Hamming entre deux chaînes de caractères de ce langage différentes deux à deux. - Si langage={"aabb", "xayy", "tghy", "xgyy"}, sa distance de Hamming est de 1 Écrire une fonction d entête : int distanceh langage(char[nb][l] langage), qui retourne la distance de Hamming de son paramètre langage (Le paramètre langage est un tableau de NB chaînes de caractères toutes de même longueur L, strictement positives déjà définies) NB et L sont 2 constantes entières 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 représentations binaires (voir exemple) la distance de Hamming entre les nombres 7 et 4 est 2 (7 est représenté en binaire sur un octet (8 bits) par 00000111 et 4 est représenté en binaire par 00000100) Question 3-a : Écrire une fonction d entête : void binaire(char *bin,int N) qui met dans la chaîne d adresse bin, la représentation binaire de N ( On suppose que 0< =N <256 ) Question 3-b : Écrire une fonction d entête : 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 p a g e 5 s u r 5