Licence E.E.A. TD N 2 de Langage C/C++



Documents pareils
Chap III : Les tableaux

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

Les chaînes de caractères

Algorithmique et Programmation, IMA

V- Manipulations de nombres en binaire

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

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

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

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

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

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

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

Les structures de données. Rajae El Ouazzani


DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Solutions du chapitre 4

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

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

Licence Sciences et Technologies Examen janvier 2010

Utilisation d objets : String et ArrayList

Algorithmes récursifs

Rappels Entrées -Sorties

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

Introduction au langage C

Représentation d un entier en base b

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

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

Java Licence Professionnelle CISII,

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)

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

Les arbres binaires de recherche

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

Algorithmique I. Algorithmique I p.1/??

Programmation en langage C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Premiers Pas en Programmation Objet : les Classes et les Objets

TP 1. Prise en main du langage Python

Recherche dans un tableau

STAGE IREM 0- Premiers pas en Python

Chapitre 1 : La gestion dynamique de la mémoire

I. Introduction aux fonctions : les fonctions standards

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

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

TP, première séquence d exercices.

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

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

Conventions d écriture et outils de mise au point

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

Cours de Systèmes d Exploitation

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

1 Recherche en table par balayage

Initiation à la programmation en Python

Les structures. Chapitre 3

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

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

Le langage C. Séance n 4

Programmation système I Les entrées/sorties

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

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

Conversion d un entier. Méthode par soustraction

Programmation Classique en langage C

Initiation à LabView : Les exemples d applications :

La Clé informatique. Formation Excel XP Aide-mémoire

INITIATION A LA PROGRAMMATION

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

Initiation à Excel. Frédéric Gava (MCF)

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

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

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Corrigé des TD 1 à 5

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Chapitre 10. Les interfaces Comparable et Comparator 1

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

EXCEL TUTORIEL 2012/2013

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

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

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

Informatique Générale

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

Cours d algorithmique pour la classe de 2nde

INF 321 : mémento de la syntaxe de Java

Traitement des données avec Microsoft EXCEL 2010

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

Cours Informatique Master STEP

SUPPORT DE COURS. Langage C

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

Claude Delannoy. 3 e édition C++

1 Description générale de VISFIELD

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

Langage Java. Classe de première SI

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

Créer le schéma relationnel d une base de données ACCESS

Introduction à MATLAB R

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

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

Transcription:

TD N 2 de Langage C/C++ 1 Licence E.E.A. TD N 2 de Langage C/C++ Ce TD a pour objectif de vous faire découvrir et utiliser le langage C et peut être C++. Il s agira de transcrire sous la forme d un programme C, des algorithmes afin de réaliser les fonctions demandées. 1 Calculer n! Le but de cet exemple est de calculer n! pour une valeur de n fournie par l utilisateur et comprise entre 1 et 7. Si la valeur entière fournie par l utilisateur n est pas dans cet intervalle, il lui sera demandé une nouvelle valeur. Notions introduites : définition d une variable, affichage de la valeur d une variable, saisie de la valeur d une variable (fonction scanf), la boucle while, la boucle for, les instructions conditionnelles (if-else), le type int. 2 Une étoile est née Le but de cet exercice est de construire un dessin de la lettre X, à l aide d espaces et d une lettre fournie par l utilisateur, auquel on demande aussi la hauteur du dessin qu il désire obtenir. Avec les réponses a et 5 il vient : a 3 Travaillons à la chaîne Le but de cet exercice est d utiliser les fonctions strcpy, strcat, strcmp. Dans un premier temps, vous remplirez un tableau de caractères, avec la chaîne est le plus fort, puis à l aide d un autre tableau de caractères (tab de longueur 51), vous réaliserez la phrase popeye est le plus fort. Enfin vous ajouterez un morceau de phase afin d écrire popeye est le plus fort car il mange des épinards. Finalement, vous comparerez les deux chaînes de caractères suivantes : blanc et blague. Notions introduites : les fonctions strcpy, strcat et strcmp, l initialisation d un tableau à la définition. 4 Tableaux multidimensionnels Le but de cet exercice est de réaliser le produit matriciel des deux matrices suivantes : 7 8 9 10. 11 12 Notions introduites : les tableaux multidimensionnels. ( ) 1 2 3 et 4 5 6

2 TD N 2 de Langage C/C++ 5 Trier n est pas jouer Il s agit d écrire un programme permettant à l utilisateur de saisir des entiers (au plus 8), et de les voir affichés triés par ordre croissant. L algorithme de tri utilisé est le tri par insertion. Notions introduites :décomposition d un programme en fonctions, prototypage des fonctions, définition des constantes entières, utilisation des tableaux statiques. Spécifications : Les entiers seront stockés dans un tableau prévu pour 8 entiers. Ils seront ensuite triés dans ce même tableau, qui servira à l affichage. Ce tableau sera déclaré comme variable globale du programme. Ce tableau est rempli grâce à une fonction nommée lire(). Le principe du tri insertion est le suivant. On considère que la gauche du tableau est déjà triée. On considère alors l élément suivant la partie triée et on le fait descendre à sa place en le comparant à l élément qui le précède. On commence par sauver l élément à mettre en place dans une variable cle. On pousse ensuite d une position vers la droite les éléments qui le précèdent et qui sont plus grands que lui. On le range dans le tableau lorsqu on a trouvé sa place. Attention : le premier indice d un tableau est 0! 6 Recherche dichotomique Le but de cet exercice est de faire une recherche dichotomique d une clé dans un tableau trié. Il s agit d écrire deux fonctions. La première, indice_min, doit, étant donnés deux indices d un tableau, indiquer celui en lequel est rangée la plus petite donnée. La seconde, trier, doit obligatoirement utiliser la fonction indice_min pour trier le tableau. Pour cela, on pourra utiliser un tri sélection. Ce tri commence par déterminer le plus petit élément du tableau pour le mettre en première position. Il cherche ensuite le second plus petit élément à partir de la deuxième position du tableau et ainsi de suite. Vous trouverez plus de détails dans le programme ci-dessous. enum MAXDONNEES=20; int tableau[maxdonnees]; int lire(void); int IndiceMin(int,int); void trier(int); void afficher(int); int NbrDonnees; NbrDonnees=lire(); trier(nbrdonnees); afficher(nbrdonnees); int lire() int donnee, nbr=0; printf("\nentrez les données entieres positives à trier, sur une ligne," Licence E.E.A. Université de Metz 30 janvier 2004

TD N 2 de Langage C/C++ 3 "separes par des blancs.\nterminer la saisie en tapant -1.\n" "Vous avez droit u plus %d valeurs\n",maxdonnees); while ((nbr<=maxdonnees)&&(donnee!=-1)) if(nbr==maxdonnees) printf("\nvous avez donne plus de %d entiers, seuls les %d " "premiers seront tries\n",maxdonnees,maxdonnees); else tableau[nbr]=donnee; nbr++; /*cette fonction prend en argument deux indices dans le tableau et retourne celui en lequel se trouve le plus petit element*/ int IndiceMin(int indice1,int indice2) /* A COMPLETER*/ /*cette fonction trie le tableau tab qui comporte nombre donnees*/ void trier(int nombre) /*A COMPLETER en utilisant le tri selection et la fonction IndiceMin*/ void afficher(int nombre) int i; printf("\nvoici le tableau trié\n"); for (i=0;i<nombre;i++) printf("%5d",tableau[i]); printf("\n"); 7 Tri sélection Il vous faudra ici écrire deux fonctions. La première utilisera deux paramètres entiers et retournera un entier ; elle devra déterminer, étant donnés deux indices d un tableau, celui en lequel se trouve la plus petite donnée. Cette fonction devra être utilisée par la seconde fonction pour trier un tableau par un tri sélection. Le principe de ce tri est le suivant : il commence par déterminer le plus petit élément du tableau pour le mettre en première position. Il cherche ensuite le second plus petit élément à partir de la deuxième position du tableau et ainsi de suite. /*Il s agit d écrire deux fonctions. La première, indice_min, doit, étant donnés deux indices d un tableau, indiquer celui en lequel est rangée la plus petite donnée. La seconde, trier, doit

4 TD N 2 de Langage C/C++ obligatoirement utiliser la fonction indice_min pour trier le tableau.*/ enum MAXDONNEES=20; int tableau[maxdonnees]; int lire(void); int IndiceMin(int,int); void trier(int); void afficher(int); int NbrDonnees; NbrDonnees=lire(); trier(nbrdonnees); afficher(nbrdonnees); int lire() int donnee, nbr=0; printf("\nentrez les données entieres positives à trier, sur une ligne," "separes par des blancs.\nterminer la saisie en tapant -1.\n" "Vous avez droit u plus %d valeurs\n",maxdonnees); while ((nbr<=maxdonnees)&&(donnee!=-1)) if(nbr==maxdonnees) printf("\nvous avez donne plus de %d entiers, seuls les %d " "premiers seront tries\n",maxdonnees,maxdonnees); else tableau[nbr]=donnee; nbr++; /*cette fonction prend en argument deux indices dans le tableau et retourne celui en lequel se trouve le plus petit element*/ int IndiceMin(int indice1,int indice2) /* A COMPLETER*/ /*cette fonction trie le tableau tab qui comporte nombre donnees*/ Licence E.E.A. Université de Metz 30 janvier 2004

TD N 2 de Langage C/C++ 5 void trier(int nombre) /*A COMPLETER en utilisant le tri selection et la fonction IndiceMin*/ void afficher(int nombre) int i; printf("\nvoici le tableau trié\n"); for (i=0;i<nombre;i++) printf("%5d",tableau[i]); printf("\n"); 8 Conversion Le sujet de cet exercice est la conversion d un entier en une chaîne de caractères représentant son écriture binaire. Compléments de connaissances : Avec les entiers, vous disposez entre autres de deux opérations qui pourront vous être utiles : la division entière représentée par le symbole / et le reste modulo, représenté par le symbole % : par exemple, 7/3 = 2 et 7%3 = 1. Par ailleurs, sachez que toute chaîne de caractères doit se terminer par le caractère \0. Énonce : Écrire un programme permettant de saisir un entier positif ou non, qui le transforme en une chaîne de caractères représentant son écriture binaire et qui imprime cette chaîne. On prendra la convention (non universelle) suivante : un entier négatif a pour écriture binaire l écriture binaire de son opposé précédée du signe. le programme ne traitera que le cas des entiers dont la valeur absolue ne dépasse pas 32767. void convertir(void); /*fonction qui convertit la variable entier de type int en une cha^ıne de caractères notée chaine représentant son écriture binaire*/ int entier; /*pour l entier à convertir*/ char chaine[33]; /*devra contenir l écriture de entier sous forme d une cha^ıne de caractères. On pourra réfléchir au choix du 17*/ printf("indiquez un entier : "); scanf("%d",&entier); convertir(); printf("revoilà votre entier sous forme binaire : %s\n",chaine); void convertir() /*A COMPLETER*/