Partie cours :6.50 pts



Documents pareils
Les arbres binaires de recherche

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

Les structures de données. Rajae El Ouazzani

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

Cours d Algorithmique et de Langage C v 3.0

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

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

Programme Compte bancaire (code)

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

et Programmation Objet

I. Introduction aux fonctions : les fonctions standards

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Recherche dans un tableau

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Arbres binaires de recherche

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


ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Claude Delannoy. 3 e édition C++

Chapitre 10. Les interfaces Comparable et Comparator 1

Package Java.util Classe générique

Resolution limit in community detection

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

Objets et Programmation. origine des langages orientés-objet

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

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

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Algorithmique, Structures de données et langage C

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

Programmation en C/C++

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

Introduction au pricing d option en finance

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

Algorithmique et Programmation, IMA

INFO-F-105 Language de programmation I Séance VI

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Solutions du chapitre 4

Le langage C++ (partie I)

Introduction à l algorithmique et à la programmation M1102 CM n 3

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

Introduction à l héritage en C++

Introduction au langage C

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

Java Licence Professionnelle CISII,

Programmation stochastique

TD3: tableaux avancées, première classe et chaînes

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Licence Sciences et Technologies Examen janvier 2010

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

Pourquoi l apprentissage?

Programmation Classique en langage C

Les algorithmes de base du graphisme

Conventions d écriture et outils de mise au point

as Architecture des Systèmes d Information

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation Par Objets

Un ordonnanceur stupide

Analyse de sécurité de logiciels système par typage statique

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

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Algorithmique I. Algorithmique I p.1/??

Cours Programmation Système

TD/TP PAC - Programmation n 3

Introduction à JDBC. Accès aux bases de données en Java

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Examen Médian - 1 heure 30

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Plan Pédagogique du cours

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

INF 321 : mémento de la syntaxe de Java

Le prototype de la fonction main()

Algorithmes de recherche

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Application 1- VBA : Test de comportements d'investissements

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

Notions fondamentales du langage C# Version 1.0

Programmation avec des objets : Cours 7. Menu du jour

C f tracée ci- contre est la représentation graphique d une

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

IRL : Simulation distribuée pour les systèmes embarqués

Cours de Master Recherche

Université Kasdi Merbeh Ouargla FSSI/ Département des maths et de l informatique Corrigé type TD N 8 de ASD2 (Les Graphes)

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

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)

OS Réseaux et Programmation Système - C5

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Corrigés des premiers exercices sur les classes

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

Plan du cours. Historique du langage Nouveautés de Java 7

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Transcription:

Ecole préparatoire en Sciences et Techniques d'oran Module : Informatique 2 2 me année, Semestre 4, 2011/2012 Devoir surveillé Mai 2012 Durée : 01h30mn Partie cours :6.50 pts Exercice 1 : (les arbres) 3.50 pts 1. Soit l'arbre binaire suivant : Figure 1 Arbre binaire (a) donnez la structure générale en C++ d'un arbre binaire, (b) donner l'algorithme de parcours en profondeur préxe, (c) appliquez cet algorithme sur l'arbre de la gure 1, et donnez l'ordre préxe des noeuds (faire la trace de l'algorithme), Exercice 2 : (les graphes) 3.00pts Soit le graphe suivant : Figure 2 Graphe orienté 1. donnez les arcs incidents à E vers l'extérieur, 2. donnez la matrice d'incidence conrrespondant au graphe de la gure 2. Partie TD : 13.50 pts Exercice 1 : (la récursivité) 2.00pts Pour un entier m > 0 donné, la suite de Syracuse est dénie par : u 0 = m un2 si u u n+1 = n est pair u n 3 + 1 si u n est impair donnez la fonction recursive dont le prototype int syracuse(int n, int m), qui calcule la suite dénie ci-dessus. 1

Exercice 2 : (la complexité algorithmique) 4.25pts Soit le programme en C++ suivant : if (a>b) for(int i=5; i<=n-5;i++) for(int j=i-5; j<=i+5; j++) x=x+3; else for(int i=1; i<=n;i++) for(int j=1; j<=n; j++) for(int k=1; k<=n; k++) x=x+b; Etudiez le nombre d'additions réalisées par l'algorithme ci-dessus dans le meilleur cas, le pire cas, puis dans le cas moyen en supposant que les tests ont une probabilité de 1 2 d'être vrai. Exercice 3 : (les listes chaînées) 7.25pts Un rectangle est déni par sa couleur, sa hauteur et sa largeur : 1. donnez la structure ListRec d'une liste chaînée, dans laquelle on pourra ranger les informations de plusieurs rectangles, 2. donnez les fonctions : (a) Ajouter, pour ajouter un élément au niveau de l'en-tête de la liste, (b) Supprimer, pour supprimer un élément de la liste au niveau de l'en-tête, (c) Acher, pour acher la couleur et la surface de chaque rectangle rangé dans la liste, 3. en faisant appel, aux fonctions ci-dessus, donnez le programme principal qui permet de : saisir et insérer les informations de 100 rectangles, acher la couleur et la surface de chaque rectangle de la liste, supprimer les 10 derniers éléments insérés, 2

Ecole préparatoire en Sciences et Techniques d'oran Module : Informatique 2 2 me année, Semestre 4, 2011/2012 Corrigé type du devoir surveillé Mai 2012 Durée : 01h30mn Partie cours :6.50 pts Exercice 1 : (les arbres) 3.50 pts 1. la structure générale en C++ d'un arbre binaire : (0.25pts *5) struct Noeud TypeElt elt; Noeud * gauche; Noeud * droit; Noeud * T; // la racine de l'arbre 2. l'algorithme de parcours en profondeur préxe : (0.25pts *5) void parcours_profondeur_prefixe(noeud*t) if (! est_vide(t)) traiter(t); // Traiter le noeud T parcours_profondeur_prefixe(gauche(t)); parcours_profondeur_prefixe(droit(t)); 3. application de l'algorithme sur l'arbre : (1.00 pts) la fonction parcours_prof ondeur_pref ixe traite les noeuds de l'arbre dans l'ordre : racine, gauche, droite, ce qui donne : Exercice 2 : (les graphes) 3.00pts 1. les arcs incidents à E vers l'extérieur : (0.5pts*3) 3-3-7-4-8-0-1-5-2-6-7-9 (E,B),(E,D) et (E,F) 2. la matrice d'incidence conrrespondant au graphe : (0.25pts*6) A B C D E F A 0 1 0 0 1 0 B 1 0 0 0 0 0 C 1 0 1 0 0 1 D 0 1 0 0 0 0 E 0 1 0 1 0 1 F 0 0 1 0 1 0 Partie TD : 13.50 pts Exercice 1 : (la récursivité) 2.00pts int syracuse(int n, int m) if(n==0) return m; else (0.5 pt) 1

if (syracuse(n-1,m)\%2) return (syracuse(n-1,m)*3+1); else return (syracuse(n-1,m)/2); (0.5pt) (0.5+0.5 pt) Exercice 2 : (la complexité algorithmique) 4.25pts si (a b) le nobre d'additions est : (1.00 pt) C1(n) = n 5 i+5 i=5 j=i 5 1 = n 5 i=5 11 = 11 n 5 i=5 = 11 ( n 5 i=1 4 i=1 ) = 11 ( n 5 i=1 4) = 11 (n 5 4) = 11(n 9). sinon le nombre d'additions est : (1.00 pt) C2(n) = n i=1 n j=1 Ce qui donne : le meilleur cas : Min A (n) = 11(n 9) (0.75 pt) le pire cas : Max A (n) = n 3 (0.75 pt) le cas moyen : Moy A (n) = 1 2.11.(n 9) + 1 2.n3 = 1 2.n3 + 11 2.n 9 2 Exercice 3 : (les listes chaînées) 7.25pts #include <iostream> #include <string.h> using namespace std; /***La structure***/ (0.25pt *6) struct ListRec string couleur; float hauteur; float largeur; ListRec *next; ; struct ListRec* tete; n k=1 1 = n.n.n = n3 /*** La fonction Ajouter ***/ (0.25pt * 7) ListRec * Ajouter(ListRec *& tete,string c,float h, float l) ListRec *lr = new ListRec; if (!lr) cout << "Plus de mémoire" << endl; else lr->couleur = c; lr->hauteur = h; lr->largeur = l; lr->next = tete; tete = lr; /*** La fonction Suprimer ***/ (0.25pt * 4) ListRec * Supprimer(ListRec *&tete) ListRec *lr = tete; tete = lr->next; delete lr; /*** La fonction Afficher ***/ (0.25pt * 4) void Afficher(ListRec * tete) (0.75 pt) 2

ListRec *lr = tete; while(lr!=null) cout << "Couleur = " << lr->couleur; cout << "Surface = " << lr->hauteur * lr->largeur; /*** Le programme principal ***/ (0.25pt * 8) main( ) tete = NULL; string c; float h,l; for(int i=0; i<100; i++) cout << "Couleur = " ; cin >> c; cout << "Hauteur = "; cin >> h; cout << "Largeur = "; cin >> l; Ajouter(tete,c,h,l); Afficher(tete); for(int i=0; i<10; i++) Supprimer(tete); 3