Examen d'informatique 3i1 Polytech'Grenoble



Documents pareils
Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Le langage C. Séance n 4

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

I. Introduction aux fonctions : les fonctions standards

Les structures. Chapitre 3

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

Chapitre 2. Classes et objets

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

Programmation impérative

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

Programmation système I Les entrées/sorties

Logiciels concernés. Situation. Ciel et le pont comptable. Note conçue et rédigée par Jalons sprl tous droits réservés - 27/06/2007.

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

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

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

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

Programmation Objet - Cours II

Premiers Pas en Programmation Objet : les Classes et les Objets

Algorithmique et Programmation, IMA

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 1 : La gestion dynamique de la mémoire

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

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

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

Cours d Algorithmique et de Langage C v 3.0

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

LA RESPONSABILITE FISCALE ET PENALE DU DIRIGEANT D ENTREPRISE

Le prototype de la fonction main()

Généralités sur le Langage Java et éléments syntaxiques.

Création d'un questionnaire (sondage)

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

ARBRES BINAIRES DE RECHERCHE

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Introduction au langage C

Programmation par les Objets en Java

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

Cours Programmation Système

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Les structures de données. Rajae El Ouazzani


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

UE C avancé cours 1: introduction et révisions

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

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

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

Ecole nationale supérieure d architecture de Grenoble BIENVENUE

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

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

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

Initiation à la programmation en Python

1. Installation du Module

Réaliser un PUBLIPOSTAGE

Les fichiers. Chapitre 4

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

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

Poker. A rendre pour le 25 avril

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

Ligne 34. Château-Landon / Egreville Melun

Tp 1 correction. Structures de données (IF2)

Claude Delannoy. 3 e édition C++

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

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

MANTES-LA-VILLE - Domaine de la Vallée > MANTES-LA-VILLE - Gare routière > MANTES-LA-JOLIE - Sangle

Cours 1: Java et les objets

TRAAM STI Acquisition et exploitations pédagogiques des données sur un système pédagogique

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

Cours Langage C/C++ Programmation modulaire

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Paris-Ile de France Capitale Economique

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

Prochaine rencontre: jeudi 15 mai, 10h00/12h00 Maison des Habitants Centre-ville - 2 rue du Vieux Temple - Grenoble

Virtualisation de Windows dans Ubuntu Linux

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

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

DNS ( DOMAIN NAME SYSTEM)

GESTION DES FICHIERS C/UNIX

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

et Programmation Objet

LISTE DES HOTELS. Absolute Paris ( Auberge de jeunesse)

PROJET ALGORITHMIQUE ET PROGRAMMATION II

IUT de Laval Année Universitaire 2008/2009. Fiche 1. - Logique -

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Les chaînes de caractères

Diffusion d'images en multicast avec Clonezilla en établissement

Cours 14 Les fichiers

Service client LSC 1

ACCORD. Apprendre le français à Paris ECOLE DE LANGUES PARIS

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Transcription:

Examen d'informatique 3i1 Polytech'Grenoble 3h30 - Tous les documents sont autorisés Le barème est donné à titre indicatif, il peut être modifié. La notation prendra en compte la qualité de vos commentaires, la compilation sans erreur et sans warnings et la bonne exécution de vos fonctions. Vous trouverez à la racine de votre compte Linux un répertoire ExamC_3i1_2008/ contenant les fichiers décrits dans l'énoncé. A la fin de l'examen, SEUL ce répertoire (et donc tous les fichiers qu'il contient) sera automatiquement recopié et corrigé. L'objectif du problème est de vous faire manipuler des listes chainées de stations de lignes de tramways. Une ligne de tramway est désignée par : - une lettre (A ou B ou C, etc...); - la liste chainée des stations. Chaque station est décrite par : - son ordre d'apparition dans le sens aller (1ere, 2e, 3e, etc..); - son ordre d'apparition dans le sens retour (1ere, 2e, 3e, etc..); - le nom (intitulé) de la station. Exemples : La ligne A est composé de 29 stations, parmi lesquelles : La station "Saint-Bruno" est la 7e dans le sens aller et la 23e dans le sens retour; La station "Gares" est la 8e dans le sens aller et la 22e dans le sens retour. La ligne B est composé de 20 stations, parmi lesquelles : La station "Cité Internationale" est la 1ère dans le sens aller et la 20e dans le sens retour. La station "Gares" est la 4e dans le sens aller et la 17e dans le sens retour. Préparatif à l'examen : Vous trouverez à la racine de votre compte un répertoire ExamC_3i1_2008/ contenant 3 fichiers : - exam_tramway.c qui contient le squellette du programme C à écrire ; - lignea.txt qui contient la liste des stations de la ligne de tramway A de Grenoble - ligneb.txt qui contient la liste des stations de la ligne de tramway B de Grenoble page 1

1 ère partie Dans cette partie, on souhaite manipuler une liste de stations en utilisant une liste chainée. La liste de stations et le descriptif de chaque station sera saisie au clavier par l'utilisateur. Question 1 (1 pts) Définir une structure autoréférencée NoeudStation permettant de mémoriser : - la description d'une station (ordre d'apparition dans le sens aller, ordre d'apparition dans le sens retour et son intituté) - un pointeur vers un autre NoeudStation. Cette structure permettra de représenter un élément d'une liste chainée de stations. Question 2 (1 pts) Définir une structure LigneTramway permettant de gérer une liste de stations. Cette structure devra posséder : - un champ pour indiquer le nom de la station décrit par une lettre; - un champ pour accéder à la liste de ses stations Question3 (1 pts) Ecrire une fonction InitNoeud qui alloue et initialise tous les champs d'un élément NoeudStation (les ordres d'apparition aller et retour à 0, l'intitulé à la chaine de caractères vide). Le prototype de cette fonction devra être : NoeudStation *InitNoeud(); Question 4 (1 pts) Ecrire une fonction InitLigne qui alloue et initialise tous les champs d'une structure LigneTramway. Le prototype de cette fonction devra être : LigneTramway *InitLigne(); Question 5 (2.5 pts) Ecrire une fonction CreerLigne qui demande à l'utilisateur le nom de la ligne puis crée les éléments de la liste chainée en demandant chaque fois à l'utilisateur l'intitulé de la station, son ordre d'apparition dans le sens aller et son ordre d'apparition dans le sens retour. Le prototype de cette fonction devra être : LigneTramway *CreerLigne(); L'ordre de saisie des stations n'aura pas d'importance puisque l'on connait leurs ordres d'apparition dans le sens aller et retour (vous pourrez donc ajouter une station à la liste des stations en début ou en fin de liste). page 2

Question 6 (2 pts) Ecrire une fonction AfficherLigne qui affiche toutes les informations de toutes les stations contenues dans la ligne de tramway passé en paramètre. Le prototype de cette fonction devra être : void AfficherLigne(LigneTramway *lg); Question 7 (1.5 pts) Ecrire le programme principal pour tester toutes vos fonctions. Question 8 (2 pts) Ecrire une fonction NbStations qui compte le nombre d'éléments d'une liste de stations. L'affichage de la valeur calculée se fera dans le programme principal. Vous pourrez faire une version itérative ou une version récursive. Le prototype de cette fonction devra être : int NbStations(NoeudStation *liste); 2 ième partie Dans cette partie, on souhaite construire la liste de stations en utilisant la description de stations contenue dans un fichier texte. Vous avez à votre disposition deux descriptifs de lignes de tramways : lignea.txt et ligneb.txt. Ces fichiers texte de données ont la forme suivante : - la première ligne contient une lettre qui est le nom de la ligne; - toutes les lignes de texte suivantes sont le descriptif des stations de cette ligne de tramway. Typiquement, l'une de ces lignes de texte est de la forme suivante : ordre d'apparition sens aller (un entier) ordre d'apparition sens retour (un entier) intitulé d'une station (une chaine de caractères) Par exemple dans le fichier lignea.txt 7 23 Saint-Bruno Par exemple dans le fichier ligneb.txt 4 17 Gares Question 9 (3 pts) Ecrire une fonction CreerLigneFichier qui crée et retourne une ligne de tramway à partir du nom du fichier texte passé en paramètre. page 3

Question 10 (1 pts) Ecrire une fonction PresenceStation qui prend en paramètre l intitulé d une station et une liste de stations et retourne 1 si l intitulé de la station est bien présent dans la liste des stations, 0 sinon. Question 11 (2 pts) Ecrire une fonction IntersectionLignes qui prend en paramètre deux lignes de tramways et affiche à l'écran l intitulé des stations communes aux deux lignes. Vous testerez cette fonction dans le programme principal par les deux lignes de tramways définis dans lignea.txt et ligneb.txt. Question 12 (2pts) Il peut arriver qu'une station soit en travaux, il n'y a alors plus d'arrêt pour cette station. Pour modéliser cette situation, définir une fonction EnleverStation qui prend en paramètre le nom de la station en travaux et une liste de stations et retourne cette liste de stations de laquelle on a supprimé la station en travaux. Attention : il ne suffira pas de supprimer un maillon de la liste chainée, il faudra également renuméroter les ordres d appartition aller et retour de certaines stations de la ligne. Question 13 Bonus (2 pts) Ecrire une fonction AfficherLigneSensAller qui affiche dans le sens aller l'intitulé des stations de la ligne de tramway passé en paramètre (c'est à dire dans l'ordre croissant de l'ordre d'apparition du sens aller). Aide : vous pourrez définir une fonction RechercheIntituleSensAller qui prend en paramètre un entier décrivant un ordre d'apparition dans le sens aller d'une station et une liste de station et retourne l'intitulé de cette station. page 4

A 14 16 Albert 1er de Belgique 9 21 Alsace-Lorraine 19 11 Arlequin 28 2 Auguste Delaune 6 24 Berriat-Le magasin 2 28 Charles Michels 13 17 Chavant 29 1 Echirolles Denis Papin 25 5 Echirolles Gare 24 6 Essarts-La Butte 3 27 Fontaine Hotel de ville 1 29 Fontaine La Poya 5 25 Gabriel Péri-Les Fontainades 8 22 Gares 20 10 Grand Place 11 19 Hubert Dubedout-Maison du Tourisme 18 12 La Bruyère 26 4 La Rampe-Centre ville 22 8 Les Granges 4 26 Louis Maisonnat 17 13 Malherbe 27 3 Marie Curie 16 14 MC2-Maison de la Culture 15 15 Mounier 21 9 Polesud-Alpexpo 7 23 Saint-Bruno 23 7 Surieux 12 18 Verdun-Préfecture 10 20 Victor Hugo B 5 16 Alsace-Lorraine 16 5 Bibliothèques Universitaires 1 20 Cité Internationale 15 6 Gabriel Fauré 4 17 Gares 19 2 Gières Gare-Universités 20 1 Gières Plaine des sports 7 14 Hubert Dubedout-Maison du Tourisme 10 11 Ile Verte 13 8 Grand Sablon 11 10 La Tronche Hopital 14 7 Les Taillées-Universités 18 3 Mayencin-Champ Roman 12 9 Michallon 9 12 Notre-Dame Musée 2 19 Palais de justice 3 18 Saint-Bruno 8 13 Sainte-Claire les Halles 6 15 Victor Hugo 17 4 Condillac-Universités lignea.txt ligneb.txt page 5

exam_tramway.c #include <stdio.h> #include <stdlib.h> #include <string.h> /* Question 1 */ /* A compléter*/ /* Question 2 */ /* A compléter*/ /* Declaration des prototypes des fonctions */ /* prototypes des fonctions questions 3, 4, 5, 6 et 8 */ NoeudStation *InitNoeud(); LigneTramway *InitLigne(); LigneTramway *CreerLigne(); void AfficherLigne(LigneTramway *lg); int NbStations(NoeudStation *liste); /* prototypes des fonctions questions 9, 10, 11, 12 et 13 */ /* PROGRAMME PRINCIPAL */ int main() /* A completer */ return 0; /* Question 3 */ NoeudStation *InitNoeud() /* Question 4 */ LigneTramway * InitLigne() /* Question 5 */ LigneTramway *CreerLigne() /* Question 6 */ void AfficherLigne(LigneTramway *lg) /* Question 8 */ int NbStations(NoeudStation *liste) /* A completer */ /* Questions 9, 10, 11, 12, 13 */ page 6