Examen final (durée 1h30)

Documents pareils
ARBRES BINAIRES DE RECHERCHE

Les arbres binaires de recherche

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Les structures de données. Rajae El Ouazzani

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

INF601 : Algorithme et Structure de données

Feuille TD n 1 Exercices d algorithmique éléments de correction

L exclusion mutuelle distribuée

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

Algorithmes récursifs

Programmation Objet - Cours II

Définitions. Numéro à préciser. (Durée : )

Quelques Algorithmes simples

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

CORRECTION EXERCICES ALGORITHME 1

Cours d Informatique

Algorithmique, Structures de données et langage C

1 Recherche en table par balayage

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


Arbres binaires de recherche

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

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

Algorithmique et Programmation, IMA

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

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

4. Les structures de données statiques

Europresse.com. Pour bibliothèque d enseignement Pour bibliothèque publique. Consulter facilement la presse. Guide version 1.

Initiation à la Programmation en Logique avec SISCtus Prolog

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Continuité et dérivabilité d une fonction

Quelques algorithmes simples dont l analyse n est pas si simple

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

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

Algorithmique et Programmation

Limites finies en un point

TRIGONOMETRIE Algorithme : mesure principale

Licence Sciences et Technologies Examen janvier 2010

Serveurs de noms Protocoles HTTP et FTP

Europresse.com. Pour les bibliothèques publiques et de l enseignement. Votre meilleur outil de recherche en ligne. Guide version 1.

Initiation à la programmation en Python

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

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

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

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

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

Assistant d e tablissement de Tableaux

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

Organigramme / Algorigramme Dossier élève 1 SI

Baladeur Santé VITAL'ACT

Recherche dans un tableau

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

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Algorithmique et programmation : les bases (VBA) Corrigé

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

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

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours d Algorithmique et de Langage C v 3.0

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

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

ÉPREUVE COMMUNE DE TIPE Partie D

Gestion de photos avec Picasa

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

Algorithmique et structures de données I

Chp. 4. Minimisation d une fonction d une variable

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

alg - Classes, instances, objets [oo] Exercices résolus

Ecran principal à l ouverture du logiciel

CH.6 Propriétés des langages non contextuels

chapitre 4 Nombres de Catalan

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

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

Génie Logiciel avec Ada. 4 février 2013

La classification automatique de données quantitatives

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

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Chapitre 5 : Flot maximal dans un graphe

Les structures. Chapitre 3

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

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Chapitre 10 Arithmétique réelle

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

DNS : Domaine Name System

Access 2007 FF Access FR FR Base

STAGE IREM 0- Premiers pas en Python

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une "invite" ou "prompt" (par exemple "c:\>" )

Représentation des Nombres

PROJET ALGORITHMIQUE ET PROGRAMMATION II

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

1. Installation de COMPTINE

Rappels sur les suites - Algorithme

Adama MBODJI MBODJ.SYSTEM

Transcription:

Le 04 janvier 2016 Exercice 1: Tri Gnome (4pts) Examen final (durée 1h30) Le but de cet exercice est d écrire l algorithme du tri Gnome et de déterminer le nombre d échanges au meilleur cas et au pire cas effectués au cours d un tri gnome. Méthode : Dans le tri gnome, on commence par le début du tableau, on compare deux éléments consécutifs (i, i+1): s ils sont dans l ordre on se déplace d un cran vers la fin du tableau (incrémente) ou on s arrête si la fin est atteinte ; sinon, on les permute et on se déplace d un cran vers le début du tableau (décrémente) ou si on est au début du tableau alors on se déplace d un cran vers la fin (incrémente). a. Ecrire une procédure effectuant le tri gnome. b. Donnez la complexité du tri gnome au meilleur cas et au pire cas? Justifiez votre réponse. Exercice 2: Une Dèque (10pts) Une «Dèque» 1 possède à la fois les propriétés d une pile et d une file. Une Dèque est définie par deux points d entrée tete et queue. On peut donc ajouter ou supprimer un élément à chaque extrémité de la structure. sortie entrée Dèque entrée sortie On considère une liste chainée de mots de longueur 20 manipulée comme une Dèque. Exemple : Dèque tête queue Entrées Variables Fonction Sorties nil 1. Définir le type Liste de mots et le type Dèque. 2. Ecrire les actions paramétrées des opérations de manipulation de la Dèque suivantes 2 : a. InitDèque() qui initialise une dèque b. DèqueVide(Dèque) de type booléen ; qui vérifie si une dèque est vide c. EnDéquer (Dèque, élément (mot), sens) permet de rajouter un élément soit en tête soit en queue ; sens est défini pour désigner l extrémité à utiliser et sera égal à 1 si ajout en tête et -1 si ajout en queue. d. DéDéquer (Dèque, sens) permet de supprimer un élément soit en tête soit en queue et le retourne ; 1 Le mot dèque vient de l anglais «double ended queue» 2 La procédure CopieMot qui copie un mot dans un autre est considérée prédéfinie. 1

e. Extrémité (Dèque, sens) permet de retourner l élément qui se trouve soit en tête soit en queue (sans le supprimer). 3. Ecrire une fonction récursive Identique qui vérifie si deux mots m1, m2 sont identiques. 4. Ecrire l algorithme qui : - Initialise une Dèque D ; - Remplit (initialise) la dèque D avec n mots quelconques saisis au clavier en alternant une fois à gauche (tête) et une fois à droite (queue) ; - Supprime la première occurrence d un mot m1 et la dernière occurrence d un mot m2 de la Dèque D ; - Affiche D. Exercice 3 Arbre (6pts) Soit A un Arbre binaire ordonné (de recherche) contenant des valeurs entières. 1. Donner la déclaration du type Arbre (d entiers) 2. Etant donnée une valeur val, écrire une procédure récursive Insère qui insère val dans A (supposé non vide). On voudrait extraire un sous-arbre binaire ordonné A1 de A de la manière suivante : On considère une valeur x dans A, x sera la racine du sous-arbre A1 et toutes les valeurs de A inférieures strictement à x seront mises dans A1. 3. En utilisant les actions précédentes, écrire une fonction Sous-arbre qui construit le sous-arbre A1 (de racine x) à partir de A. On suppose que x existe dans A. 4. On suppose que l arbre A est déjà construit. Soit une valeur x existant dans A, écrire un algorithme qui construit A1 à partir de A et affiche les éléments de A1 dans l ordre croissant. Exemple 45 100 159 si x=64, A1 contiendra les valeurs {64, 45, 37, 52} 37 64 200 52 75 Bon courage 2

Exercice 1: Tri Gnome (4pts) (2+1+1) a. Corrigé examen final procédure TriGnome(E/S T : tableau[100] entier ; E/ n :entier) var i, X : entier ; i 1; tantque (i<n) faire si (T[i]<=T[i+1]) alors i i+1 sinon X T[i] ; T[i] T[i+1] ; T[i+1] X ; Si (i>1) alors i i-1 Sinon i i+1 ; fait; Fin; b. Complexité du tri gnome au meilleur cas et au pire cas. - La complexité au meilleur cas est de l ordre de O(n) quand le tableau est déjà trié on ne fait aucune permutation. - La complexité au pire cas est de l ordre de O(n 2 ) quand le tableau est trié dans le sens inverse. Exercice 2: Une Dèque (10pts) (1+0,75+0,75+1,5+1,5+1+1,5+3) 1. Définir le type Liste de mots et le type Dèque. Type liste=^nœud ; nœud=enregistrement element :chaine ; suivant :liste ; finenreg ; Dèque=enregistrement tete, queue :liste ; finenreg ; 2. a. Fonction InitDèque() : Dèque //qui initialise une dèque Var d :dèque ; d.tete nil ; d ;queue nil retourner d ; 1 P a g e

b. Fonction DèqueVide(E/d :Dèque) :booléen ; //qui vérifie si une dèque est vide Debut Si (d.tete=nil et d.queue=nil) alors retourner vrai Sinon retourner faux ; c. Procédure EnDéquer (E/S d :Dèque ; E/ mot :chaine ; E/ sens :entier) Var nouv :liste ; nouv Allouer(tailleDe(nœud) ; CopieMot(^nouv.element, mot) ; ^nouv.svt nil ; Si (DèqueVide(d)) alors d.tete nouv ; d.queue nouv ; Sinon Si (sens=1) alors ^nouv.suivant d.tete ; d.tete nouv ; Sinon ^(d.queue).svt nouv ; d.queue nouv ; d. Procédure DéDéquer (E/S d : Dèque ; E/ sens :entier ; E/S mot chaine) Var p, r : liste ; Si (d.tete=d.queue) alors p d.tete ; CopieMot(mot, ^(d.tete).element) ; d.tete=nil; d.queue=nil Sinon Si (sens =1) alors CopieMot(mot, ^(d.tete).element) ; p d.tete ; d.tete ^(d.tete).suivant sinon CopieMot(mot, ^(d.queue).element) ; p d.queue ; r d.tete ; tantque(^r.suivant!=d.queue) r ^r.suivant ; d.queue r ; ^r.svt nil ; libérer(p) ; e. Fonction Extrémité (E/ d : Dèque, sens :entier) :chaine Si (sens=1) alors retourner (^(d.tete).element ) Sinon retourner (^(d.queue.element) ; 2 P a g e

3. fonction Identique(E/ m1, m2 : chaine ; E/ i : entier) : booléen //1 er appel i =longueur(m1)=longueur(m2) si (i=0) alors retourner vrai sinon si (m1[i] m2[i]) alors retourner faux sinon retourner (Identique(m1, m2, i-1)) ; 4. Algorithme Ex2 ; Var d, di : Dèque ; n : entier ; ch, mot, m1, m2 : chaine ; l1, l2, sens : entier ; trouve :booléen ; d InitDèque() ; lire(n) ; sens=1 ; pour i 1 à n faire lire(mot) ; Endéquer(d, mot, sens) ; sens sens*(-1) ; fait ; // Suppression lire(m1, m2) ; di InitDèque() ; trouve faux tantque (! DèqueVide(d) et (trouve=faux) faire ch Extrémité(d, 1) ; l1 longueur(m1) ; l2 longueur( ch); si (l1=l2) et (identique(m1, ch, l1) alors Dédéquer(d,1, mot) ; trouve vrai sinon Dédéquer(d, 1, mot) ; Endéquer(di, mot, 1) ; fait ; si (DèqueVide(d) alors écrire("m1 n existe pas") ; tantque (!DèqueVide(di)) faire Dédéquer(di, 1, mot) ; EnDéquer(d, mot,1) ; fait ; trouve faux ; tantque (! DèqueVide(d) et (trouve=faux) faire ch Extrémité(d, -1) ; l1 longueur(m2) ; l2 longueur( ch); si (l1=l2) et (identique(m2, ch, l1) alors Dédéquer(d,-1, mot) ; trouve vrai sinon Dédéquer(d, -1, mot) ; Endéquer(di, mot, -1) ; fait ; si (DèqueVide(d) alors écrire("m2 n existe pas"); tantque (!DèqueVide(di)) faire Dédéquer(di, -1, mot) ; EnDéquer(d, mot,-1) ; fait ; // Affichage de la dèque Tantque (!DèqueVide()) faire Dédéquer(d, 1, mot) ; Ecrire(mot) ; Fait ; // Dèque vide Fin. // Fin de l algorithme 3 P a g e

Exercice 3: Arbre (0,5+1,5+2,5+1,5) Type arbre = ^nœud ; Type nœud = Enregistrement info : entier ; succ_gauche : arbre ; succ_droit : arbre ; Finenreg ; Procédure Insere (E/ a :arbre ; E/ val : entier ; E/ père :arbre ) ; Var p: arbre ; Debut Si ( non Vide(a)) alors Si (^a.info = val) alors Ecrire(" La valeur existe déjà"); Sinon pere a ; Si (^a.info > val) alors Insere (Fils_gauche(a), val, père) ; Sinon Insere (Fils_droit(a), val, père) ; Sinon / * créer le noeud*/ p Allouer (Taillede (nœud)) ; /* création du nouvel élément */ ^ p.info val ; ^p.succ_gauche nil ; ^p. succ_droit nil ; /* raccorder au nœud père */ Si (^père. info >val) alors ^père.succ_gauche p ; Sinon ^père.succ_droit p ; Procedure SousArbre(E/ A : arbre ; E/ x : entier, E/S A1 : arbre) Debut Si ( ArbreVide(A1)) alors A1 Allouer(TailleDe(nœud) ; ^A1.info x ; ^A1.succ_gauche nil ; ^A1.succ_droit nil ; Si non ArbreVide (A) alors SousArbre(FilsGauche(A),x,A1) ; Si (^A.info < x ) alors Insérer (A1,^A.info, nil) ; SousArbre(FilsDroit(A),x,A1) Algorithme Ex3 ; Var A, A1:arbre ; x : entier ; // On suppose que A est déjà créé Ecrire("donnez x ") ; lire(x) ; A1 nil ; Sous-arbre( A, x, A1) ; AfficheInfixe(A1) ; // dans l ordre croissant Fin. Procédure AfficheInfixe (E/ a : arbre); Si (non Vide(a)) alors AfficheInfixe (Fils_gauche(a)) ; Ecrire (^a.info) ; Affiche Infixe (Fils_droit(a)) ; fsi ; 4 P a g e