1.1 Écrire dans votre cahier la lettre de chaque instruction syntaxiquement correcte. Note: Les instructions sont indépendantes les unes des autres.



Documents pareils
TP : Gestion d une image au format PGM


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

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

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

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

Introduction au langage C

Initiation à la programmation en Python

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

I. Introduction aux fonctions : les fonctions standards

Les structures de données. Rajae El Ouazzani

Les structures. Chapitre 3

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

Les arbres binaires de recherche

Conventions d écriture et outils de mise au point

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et Programmation, IMA

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

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

ACTIVITÉ DE PROGRAMMATION

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

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

Cours d Algorithmique et de Langage C v 3.0

Chapitre 1 : La gestion dynamique de la mémoire

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

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

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

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

Programmation Classique en langage C

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

Programmation en langage C

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

SUPPORT DE COURS. Langage C

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

INITIATION A LA PROGRAMMATION

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

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

C++ : PROGRAMMATION-OBJET

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

Programmer en JAVA. par Tama

Java Licence Professionnelle CISII,

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

V- Manipulations de nombres en binaire

Bernard HAMM, Évelyne LAVOISIER

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

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

Solutions du chapitre 4

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

et Programmation Objet

Claude Delannoy. 3 e édition C++

Le prototype de la fonction main()

Programmation système I Les entrées/sorties

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

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

Programme Compte bancaire (code)

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Programmation en C/C++

Cours de C/C++ par la pratique. Hugues Talbot

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Recherche dans un tableau

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

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

Une introduction à Java

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

Cours 14 Les fichiers

Cours Programmation Système

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)

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Introduction à MATLAB R

Rappels Entrées -Sorties

LE LANGAGE C++ ENAC 1997 A. DANCEL

Le Langage De Description De Données(LDD)

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

Cours de C. Allocation dynamique. Sébastien Paumier

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

COURS et TP DE LANGAGE C++

EXERCICES UML. Modéliser cette situation par un diagramme de cas d utilisation. Consulter planning

Les chaînes de caractères

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

Programmation stochastique

Chapitre 2. Classes et objets

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

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

INF 321 : mémento de la syntaxe de Java

Java Licence Professionnelle CISII,

Algorithmique, Structures de données et langage C

Cours 1 : Qu est-ce que la programmation?

Le Langage C++ Patrick TRAU - ULP IPST version du 02/10/05

4. Groupement d objets

Transcription:

QUESTION 1 (3 Points) Ces déclarations sont utilisées pour les sous-questions 11 à 13 const int LONGMAX = 51; const int CDMAX = 100; typedef char type_string[longmax]; enum type_classement POURRI,PASSABLE,BON,TRES_BON,EXCELLENT struct type_cd type_string Groupe; type_string Titre; int Nb_Chanson; type_classement Classement; type_cd Un_CD; type_cd Mes_CD[CDMAX]; type_cd *Ptr_CD; int Nb_CD, i; 11 Écrire dans votre cahier la lettre de chaque instruction syntaxiquement correcte Note: Les instructions sont indépendantes les unes des autres a) type_cd Autre_CD = "Iron Maiden","The Number of the Beast",8,BON b) Ptr_CDNb_Chanson = Mes_CD[10]Nb_Chanson; c) Mes_CD[6]Titre = Un_CDTitre; d) Ptr_CD = new type_cd; 12 Supposons que le tableau Mes_CD possède 30 enregistrements contenant de bonnes valeurs Ces 30 enregistrements sont classés en ordre croissant, dans le tableau, selon leur champ Classement Quel(s) bloc(s) d'instructions permet(tent) d'afficher les groupes et les titres des CD dont le champ Classement est BON? Écrire dans votre cahier la ou les lettres correspondantes // bloc a) for (Ptr_CD = &Mes_CD[BON]; Ptr_CD < &Mes_CD[TRES_BON]; Ptr_CD++) cout << Ptr_CD->Groupe << " " << Ptr_CD->Titre << endl; (Suite à la page suivante) Page 1 sur 7

i = 0; // bloc b) while (Mes_CD[i]Classement < BON) i++; while (Mes_CD[i]Classement < TRES_BON) cout << Mes_CD[i]Groupe << " " << Mes_CD[i]Titre << endl; Nb_CD = 30; // bloc c) for (i = 0; i < Nb_CD; i++) switch (Mes_CD[i]Classement) case POURRI : case PASSABLE : case BON : cout << Mes_CD[i]Groupe << " " << Mes_CD[i]Titre << endl; break; case TRES_BON : case EXCELLENT : break; //bloc d) for (i = 0; Mes_CD[i]Classement < TRES_BON; i++) if (Mes_CD[i]Classement == BON) cout << Mes_CD[i]Groupe << " " << Mes_CD[i]Titre << endl; 13 Quelle instruction est équivalente à l'instruction suivante, Mes_CD[3]Nb_Chanson = 14; qui inscrit à la quatrième position de la variable Mes_CD, la valeur 14 dans le champ NbChanson? Écrire dans votre cahier la lettre de votre réponse a) Ptr_CD[4]Nb_Chanson = 14; b) Mes_CD[TRES_BON]Nb_Chanson = 14; c) Mes_CD[3](Titre+1)= 14; d) Ptr_CD->Nb_Chanson = 14; e) Mes_CD[3]->Nb_Chanson = 14; 14 Que se passe-t-il lorsque nous faisons l'instruction delete Tete sur une liste circulaire à liens doubles avec élément factice en mémoire? Tete pointe sur l'élément factice Écrire dans votre cahier la lettre de votre réponse a) Le pointeur Tete ne peut plus être utilisé b) L'espace mémoire de la structure contenant l'élément factice est libéré ou devenu disponible c) L'espace mémoire de la structure factice et de toutes les autres est libéré ou devenu disponible d) L'espace mémoire de la structure factice et de toutes les autres est libéré ou devenu disponible en plus du pointeur Tete e) L'espace mémoire de la structure située après l'élément factice est libéré ou devenu disponible Page 2 sur 7

QUESTION 2 (3 Points) Quel sera l'affichage obtenu lors de l'exécution du programme ci-dessous? #include <iostreamh> #include <fstreamh> struct type_mesure double Distance; double Matiere; void main() type_mesure TabMesure[5] = 5,121, 10,1022,15,763, 20,284, 25, 155 fstream FicBin; type_mesure Mesure; int i; FicBinopen("Mesurebin",ios::out ios::binary); FicBinwrite((char*) TabMesure, 5*sizeof(type_mesure)); FicBinclose(); FicBinopen("Mesurebin",ios::in ios::out ios::binary); FicBinread((char*) TabMesure, 5*sizeof(type_mesure)); Mesure = TabMesure[2]; FicBinseekp(2*sizeof(type_mesure), ios::beg); FicBinwrite((char *)& TabMesure[4], sizeof(type_mesure)); FicBinseekp(4*sizeof(type_mesure), ios::beg); FicBinwrite((char*)& Mesure, sizeof(type_mesure)); FicBinseekg(0, ios::beg); FicBinread((char*) TabMesure, 5*sizeof(type_mesure)); for (i=0;i<5;i++) cout << TabMesure[i]Distance << ' ' << TabMesure[i]Matiere << endl; FicBinclose(); Page 3 sur 7

QUESTION 3 (45 Points) Le cube Rubik est un petit cube 3x3x3 avec des carreaux de couleurs Le but du jeu est, à partir d'un cube où les carreaux de couleurs sont mélangés, d'obtenir sur chaque surface des carreaux de même couleur Un fichier binaire contient la solution du cube Rubik pour une configuration initiale des carreaux mélangés Chacune des données du fichier binaire est une valeur de type type_coup déclaré comme suit: enum type_face Haut, Bas, Gauche, Droite, Devant, Derriere struct type_coup type_face Face; // la face à tourner int Sens; // peut prendre deux valeurs: // -1 rotation dans le sens anti-horaire // 1 rotation dans le sens horaire Pour appliquer cette solution il faut être capable de la lire Ainsi, vous devez prendre l information dans le fichier binaire et inscrire cette information dans un fichier texte pour être en mesure de l imprimer Après la lecture du fichier binaire, le fichier texte aura la forme suivante: Haut anti-horaire Droite horaire Devant anti-horaire Vous n avez pas à écrire un nouveau programme pour cette question mais compléter une portion du programme fourni ci-dessous PROGRAMME À COMPLÉTER : #include <iostreamh> #include <fstreamh> enum type_face Haut, Bas, Gauche, Droite, Devant, Derriere struct type_coup type_face Face; int Sens; (Suite à la page suivante) Page 4 sur 7

/**************************************************************/ /* Description: TraduireFace() */ /* Réalise la conversion d'une valeur de */ /* l'énumération type_face en chaîne de car */ /* Paramètres: Face (IN) une valeur de l'énum de type_face */ /* MotFace (OUT) la chaîne de caractères */ /* correspondante à Face */ /* Valeur de retour : Aucune */ /**************************************************************/ void TraduireFace(type_face Face, char MotFace[]) switch (Face) case Haut : strcpy(motface,"haut"); break; case Bas : strcpy(motface,"bas"); break; case Gauche : strcpy(motface,"gauche"); break; case Droite : strcpy(motface,"droite"); break; case Devant : strcpy(motface,"devant"); break; case Derriere : strcpy(motface,"derriere"); void main (void) char MotFace[10]; //Pour la traduction de l'énumération en //chaîne de caractères avec TraduireFace() ifstream Binaire;// le fichier binaire à lire ofstream Texte; // le fichier texte où sera écrite la solution AJOUTER LES AUTRES DÉCLARATIONS NÉCESSAIRES //ouverture du fichier binaire contenant la réponse Binaireopen("solutionbin",ios::binary); // ouverture du fichier texte dans lequel est inscrit la réponse Texteopen("solutiontxt"); INSCRIRE LES INSTRUCTIONS QUI LISENT LE FICHIER BINAIRE ET ECRIVENT ENSUITE LA SOLUTION DANS LE FICHIER SOLUTIONTXT Binaireclose(); Texteclose(); Page 5 sur 7

QUESTION 4 (45 Points) Une liste linéaire à liens simples contient l'inventaire d'un magasin Chaque élément de la liste représente un article vendu par le magasin L'information conservée sur chaque article est: le nom, le prix et le nombre en stock Cette liste est construite à partir de la déclaration suivante: struct type_article char Nom_Article[20]; float Prix; int Stock; type_article *Suivant; La liste est créée et contient déjà plusieurs éléments Elle se présente comme suit: Tete Telephone Fil Clavier Modem 6499 46 329 162 3497 24 24999 8 NULL Écrire une fonction qui calcule et retourne le montant d'une commande d'articles en parcourant la liste Cette commande ne comprendra que les articles dont la quantité en stock sera inférieure à une quantité seuil La quantité à commander sera la même pour chacun des articles La quantité seuil, la quantité d'articles à commander et la tête de la liste seront reçues en paramètre La fonction ne modifie pas le nombre d'articles en stock Par exemple, si la liste ne contenait que les quatre articles ci-haut, que le seuil est fixé à trente et que la quantité à commander est de cinquante, alors la fonction retournerait comme coût 14 248, soit: 50*3497 (puisque 24 claviers <30) + 50*24999 (puisque 8 modems <30 ) 14 248 Page 6 sur 7

QUESTION 5 (5 Points) Une théorie s'intéresse aux degrés de séparation de toutes les personnes sur la terre Un degré de séparation est un lien quelconque (ami, famille, connaissance, etc) entre deux personnes Par exemple, si André connaît Julie, et que Julie connaît Sophie, alors il y a deux degrés de séparation entre André et Sophie La structure utilisée pour représenter les liens est un tableau d'enregistrements défini selon les instructions suivantes: struct type_personne char Nom[20]; int Lien; type_personne TabLiens[76]; Le champ Lien indique qu'il y a un lien entre la personne dont le nom est inscrit dans le champ Nom et celle située à la position du lien dans le tableau Par exemple pour le tableau ci-contre, il y a un lien entre Josée et la personne située à la position 3, soit Kim Il s'agit d'un lien de degré 1 Kim a un lien avec Salim en position 5 Donc Josée a un lien de degré deux avec Salim (Josée, Kim, Salim) 0 Josée 3 1 Marie 0 2 Éric 22 3 Kim 5 4 Aniss 27 5 Salim 10 75 Anick 15 NOTE: Pour les deux questions suivantes nous considérons que les noms transmis en paramètre sont présents et uniques dans le tableau de 76 noms Vous n'avez pas à utiliser de pointeur pour ces questions A) Écrire la fonction ChercherNom() qui reçoit en paramètre le nom d'une personne et retourne sa position dans le tableau La fonction reçoit également en paramètre le tableau des noms liés Le prototype de la fonction est, int ChercherNom(char Nom[], type_personne TabNoms[76]); B) Écrire la fonction TrouverDegre() qui utilise trois paramètres Les deux premiers sont des chaînes de caractères correspondant au nom de deux personnes dans le tableau Le troisième est le tableau des noms liés La fonction fait appel à la fonction ChercherNom() (question A) pour déterminer la position de la personne reçue comme premier paramètre La fonction recherche l'autre nom reçu en paramètre en empruntant les champs liens Finalement, la fonction retourne le degré du lien entre ces deux personnes Le prototype de la fonction est, int TrouverDegre(char NomDebut[], char NomFin[], type_personne TabNoms[76]); Les professeurs du 3307 Yves Boudreault, coordonnateur Page 7 sur 7