Vous êtes sur la page 1sur 17

Licence STS

Universit Claude Bernard Lyon 1

LIF1 : Algorithmique et programmation imprative, initiation


Support de Travaux Dirigs

Elodie DESSEREE www710.univ-lyon1.fr/~edessere/LIF1

LIF1 TD 1 : Algorithmes simples


Objectifs : manipuler les notions de bases vues en CM 1 dfinition de type, variable instruction, squence dinstruction entre / sortie structure de contrle : condition, boucle,

Dans ce premier TD, les instructions seront crites uniquement en langage algorithmique. 1. Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Dbut A, B, C : Entier A 3 B 10 C A + B B A + B A C Fin 2. crire un programme qui demande un nombre lutilisateur, puis qui calcule et affiche le carr de ce nombre. Exemple : valeur saisie 5 rsultat affich : 25 3. crire un algorithme qui demande deux nombres lutilisateur et linforme ensuite si le produit est ngatif, positif ou nul. Attention toutefois, on ne doit pas calculer le produit ! 4. crire lalgorithme dun sous programme permettant de saisir puis dafficher une valeur comprise entre 1 et 31 ; on recommencera la saisie jusqu' ce que la valeur soit bien dans les bornes imposes. Exemple : valeurs saisies 43 rsultat affich : valeur non comprise entre 1 et 31 recommencez Valeur saisie 15 , affichage 15 ok ! 5. crire lalgorithme dun programme permettant dafficher la table de multiplication dun nombre saisi par lutilisateur. Exemple : valeur saisie 5 rsultat affich : 0 5 10 15 20 25 30 35 40 45 50 6. crire lalgorithme dun programme permettant de simuler le fonctionnement dune calculatrice simple (+, -, *, /). Dans cet exercice, lutilisateur saisira les deux oprandes, loprateur et le programme lui affichera le rsultat correspondant. Dans le cas dune division, on vrifiera bien que le dnominateur est non nul ! Pour sentraner 7. Afficher tous les nombres pairs compris entre 0 et 20 inclus a. en utilisant une boucle pour b. en utilisant une boucle tant que

LIF1 TD 2 : Algorithmes plus volus


Objectifs : approfondir les notions vues dans le TD prcdent (boucles, conditions, structures de donnes, entres / sorties, ) 1. crire un algorithme permettant de calculer la somme des n premires puissances de 2. Exemple : valeur saisie 6 rsultat 63 (= 1+2+4+8+16+32) 2. crire un algorithme permettant de calculer la somme des n premiers nombres impairs. Quel lien pouvez-vous tablir entre la valeur obtenue et n ? 3. crire un algorithme permettant de lire 20 nombres au clavier et dafficher le carr des nombres pairs uniquement. Attention, on ne mmorisera pas les 20 valeurs saisies. 4. crire un algorithme saisissant un temps en secondes que l'on transcrira en jours, heures, minutes, et secondes. 5. crire un algorithme permettant de savoir si une anne saisie par lutilisateur est bissextile ou non. Rappel : une anne est bissextile si elle est divisible par 4 mais non divisible par 100. 6. crire un algorithme qui calcule les racines relles (si elles existent) dun polynme du second degr dcrit par 3 coefficients rels a, b et c. Les solutions seront affiches lcran. 7. crire un algorithme permettant de trouver une valeur choisie alatoirement par le programme. Le joueur disposera au maximum de 6 tentatives pour trouver cette valeur et le programme lui indiquera chaque essai si sa valeur est trop grande ou trop petite.

Pour sentraner 8. Un nombre parfait est un nombre naturel n non nul qui est gal la somme de ses diviseurs stricts (n exclus).Exemple : 6 = 1 + 2 + 3 crire en langage algorithmique un programme qui affiche vrai si n est un nombre parfait, faux sinon.

LIF 1 TD 3 : Fonctions et procdures


Objectifs : Assimiler la diffrence entre une fonction et une procdure. Savoir dclarer et utiliser un sous-programme

Recommandations : Pour chaque algorithme demand, vous prciserez (en justifiant) sil sagit dune procdure ou dune fonction. Vous crirez lentte du sous-programme (sans oublier les prconditions, les donnes et rsultats, les dclarations des variables locales, ) ainsi quun exemple dappel au sous-programme. 1- Rappeler en quelques mots la diffrence entre une fonction et une procdure. Donnez un exemple caractristique pour chaque. 2- crire lalgorithme dun sous-programme qui retourne la moyenne de deux rels a et b donns.
crire le programme principal qui utilise le sous-programme prcdent et affiche le rsultat produit.

3- crire lalgorithme dun sous-programme permettant dafficher la table de multiplication dun nombre pass en paramtre. 4- crire lalgorithme dun sous-programme qui calcule la factorielle dun entier pass en
paramtre. Utiliser ce sous-programme pour afficher la factorielle des 10 premiers entiers.

5- crire lalgorithme dun sous-programme qui calcule la somme des n premiers entiers.
Rappel : 1+2+3++n = n(n+1)/2

6- crire lalgorithme dun sous-programme qui affiche les dix nombres suivants la valeur n donne en paramtre. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 27. 7- crire lalgorithme dun sous programme qui dessine un carr de cot N l'cran. Lutilisateur pourra choisir le caractre du contour du carr. Pour sentraner 8- Un nombre parfait est un nombre naturel n non nul qui est gal la somme de ses diviseurs stricts (n exclus). Exemple : 6 = 1 + 2 + 3 a. crire en langage algorithmique une fonction boolenne qui retourne vrai si un entier n pass en paramtre est un nombre parfait, faux sinon. b. crire en langage algorithmique le programme principal permettant dafficher la liste des nombres parfaits compris entre 1 et 10000. On utilisera le rsultat renvoy par la fonction prcdente.

LIF 1 TD 4 : Passage de paramtres


Objectifs : Comprendre la diffrence entre les modes de passage des paramtres : donne ou donne / rsultat. Comprendre la diffrence entre paramtres formels et paramtres effectifs

Recommandations : pour chacun des algorithmes que vous crirez vous prciserez le mode de passage des paramtres et vous crirez le programme principal appelant les sousprogrammes que vous aurez crits. 1- Soit le programme suivant :
#include <iostream.h> void mystere (int a, int b, int &c, int d) { c=a+b; d=a*b; } int main (void) { int e,f,g,h; cout<<"donnez une valeur"; cin>>e; cout<<"donnez une valeur"; cin>>f; mystere(e,f,g,h); cout<<" valeur "<<g<<" valeur :"<<h<<endl; return 0; }

Identifiez et notez : le(s) paramtre(s) formel(s) / le(s) paramtre(s) effectif(s) le(s) paramtre(s) en donne / le(s) paramtre(s) en donne / rsultat Quest cens faire ce programme ? Quelle(s) modification(s) faudrait-il apporter pour obtenir un rsultat plus logique ? 2- crivez lalgorithme dune procdure effectuant la permutation circulaire de trois variables : a=5 b=8 et c=2 donne aprs excution : a=2 b=5 et c=8 3- crivez lalgorithme dune procdure permettant deffectuer la division euclidienne de deux entiers a et b. On appellera q le quotient et r le reste de cette division. On rappelle la formule de la division : a=b*q + r avec r < b. 4- crivez lalgorithme dune procdure qui partir dun montant exprim en euros dcompose la somme en un nombre minimum de billets de 10 euros, de 5 euros, de pices de 2 euros et de 1 euro. 5- crivez lalgorithme dune fonction perimetre_cercle permettant de retourner le primtre dun cercle en fonction de son rayon (pass en paramtre). crivez ensuite une fonction aire_cercle qui retourne laire dun cercle. On souhaite maintenant crire un sous-programme (qui utilise les deux fonctions prcdentes) permettant partir du rayon dun cercle de calculer son primtre et sa surface. crivez lentte de ce sous programme de deux manires diffrentes. 6- crivez lalgorithme dune fonction qui partir de deux entiers n et p calcule le nombre de combinaisons de p lments pour un ensemble de n lments. Rappel : Cnp = n ! / (p ! * (n-p) !) . Transformez cette fonction en procdure puis traduisez en langage C. Pour sentraner 7- crivez lalgorithme dune procdure permettant de calculer et de retourner la somme ET le produit de deux entiers passs en paramtres. Transformez cette procdure en fonction.

LIF 1 TD 5 : Tableaux 1D
Objectifs : apprendre manipuler les tableaux une dimension et approfondir les notions algorithmiques vues jusqu prsent (condition, boucles, )

1- Dclarer un tableau de 9 rels et linitialiser avec la valeur 0. 2- crire lalgorithme dun sous-programme RemplirTableau qui remplit un tableau de 9 notes (relles) avec des valeurs demandes lutilisateur 12 18,5 13,25 8,75 16 15 13,5 12 17 3- crire lalgorithme dun sous-programme AfficheTableau qui permet dafficher les 9 valeurs contenues dans le tableau 4- crire lalgorithme dun sous-programme RechercheMin qui permet de retourner lindice de la plus petite valeur contenue dans le tableau. 5- crire lalgorithme dun sous-programme SommeTableau calculant la somme des valeurs du tableau prcdent : SommeTableau = 126 6- crire lalgorithme dun sous-programme permettant de renverser le contenu dun tableau contenant des caractres. Avant excution : T1 : A Aprs excution : T2 : I B H C G D F E E F D G C H B I A

7- On dispose de deux tableaux de tailles identiques T1 et T2 contenant les notes de contrle continu et dexamen dun tudiant pour 9 UE donnes. On souhaite partir de ces deux tableaux constituer un troisime tableau (not T3) contenant les moyennes pondres par les coefficients suivants : a. Contrle continu (T1) : coefficient 1 b. Examen terminal (T2) : coefficient 2 crire lalgorithme dun sous-programme CalculMoyenneTableau permettant partir des deux premiers tableaux de remplir un troisime tableau T3 en utilisant les coefficients donns. Exemple de calcul 14 = (12*1 + 15*2) / 3 T1 : T2 : T3 : Pour sentraner 8- crire lalgorithme dun sous-programme Cumul qui effectuera la somme des valeurs prcdentes. Exemple sur T1 T1 : 12 20 25,5 39,5 52,5 63 70 86 95 12 15 14 8 3 4,66 5,5 12 9,83 14 17 16 13 8 9,66 10,5 10 10,16 7 8 7,66 16 19 18 9 3 5

LIF 1 TD 6 : Tableaux 2D
Objectifs : apprendre manipuler les tableaux deux dimension et approfondir les notions algorithmiques vues jusqu prsent (condition, boucles, )

1- Soit M une matrice carre de taille 5x5 contenant des entiers. crire la dclaration et linitialisation dune telle structure de donnes. 2- crire un algorithme RemplirMatrice qui propose lutilisateur de remplir une matrice M de taille 5x5. 5 1 8 6 0 6 9 7 4 2 1 1 0 9 7 4 5 7 3 0 0 2 5 0 9 3- crire deux procdures daffichage dune matrice 2D de taille 5*5 a. Affichage_2D_ligne : qui affichera la matrice ligne par ligne b. Affichage_2D_colonne : qui affichera la matrice colonne par colonne 4- crire trois fonctions permettant sur matrice 2D de taille 5*5: a. de calculer la somme des lments dune ligne (le numro de la ligne tant pass en paramtre) b. de calculer la somme des lments dune colonne (le numro de la colonne tant pass en paramtre) c. de calculer la somme des lments de la diagonale (dans la mesure o la matrice est bien carre) 5- crire un algorithme RecherchePlusGrand permettant de rechercher le plus grand lment de cette matrice et de retourner lindice de ligne et lindice de colonne correspondant cet lment. 6- crire un algorithme TrianglePascal permettant de remplir les cases dun tableau 2D avec les coefficients du triangle de Pascal. Remarques : La hauteur du triangle sera passe en paramtre et on supposera la fonction combinaison crite. Exemple : 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Pour sentraner 7- Soit M un tableau 2 dimensions de taille 3 * 5 contenant des entiers. crire en langage algorithmique un sous-programme permettant de remplir un tableau 1D avec la somme des colonnes de M.
1 8 3
12

5 9 2
16

6 0 7
13

4 6 1
11

3 4 8
15

LIF 1 TD Rvision 1
Objectifs : revoir les notions abordes dans les TD 1 6.

1. crire en un minimum de lignes lalgorithme dun sous-programme permettant de dessiner le motif ci-contre. Le nombre de motifs et la longueur du motif seront passs en paramtres du sous-programme. Dans cet exemple, le motif de base est rpt 3 fois et la base dun triangle est de longueur 4. 2. crivez une fonction permettant de saisir une valeur entire comprise entre 1 et 31. Attention, la saisie devra tre propose tant que la valeur fournie nappartient pas lintervalle [1,31]. 3. crire lalgorithme dun sous programme permettant de vrifier si un entier pass en paramtre est premier ou non. Rappel : un nombre est premier sil nest divisible que par 1 et par lui-mme. Exemple : premier(15) renverra faux premier(13) renverra vrai 4. crivez lalgorithme dun sous-programme qui calcule et retourne un tableau contenant les 10 premiers termes de la suite Un dfinie par :

5. On suppose avoir dclar un tableau de 10 entiers T dont les valeurs ont t initialises. crivez lalgorithme du sous-programme qui initialise un tableau dentiers S, dont les lments S[i] devront contenir la somme des lments de T entre T[0] et T[i] (T[i] compris). T: S: 2 2 7 9 0 9 3 12 1 13 6 19 4 23 5 28 9 37 8 45

6. crire une fonction C qui prend comme paramtre un tableau n*n et qui met dans chaque case situe sous la diagonale le produit du numro de la ligne par le numro de la colonne comme dans lexemple suivant (les autres cases ntant pas modifies) : 0 0 1 2 3 4 0 0 0 0 0 1 2 3 4 4 6 8 9 12 16 1 2 3 4

LIF 1 TD 7 : Chanes de caractres

Objectifs :

se familiariser avec les chanes de caractres, apprendre les manipulations de base et appliquer les techniques et comptences acquises lors des TD sur les tableaux.

1- crire lalgorithme dune fonction qui compte le nombre de caractres dans une chane (sans utiliser la fonction prdfinie strlen) Ex : longueur("bonjour") renvoie 7 2- crire lalgorithme dune procdure qui affiche une chane de caractre en inscrivant un caractre par ligne h Ex : affiche("hello") e l l o 3- crire lalgorithme dune procdure qui construit le miroir dune chane de caractres. Ex : miroir("bonjour") " ruojnob" 4- crire lalgorithme dune fonction qui retourne le nombre doccurrence dune lettre dans une chane de caractres Ex : nb_occurrence("bonjour",o) 2 nb_occurrence("bonjour",z) 0 5- crire lalgorithme dune fonction qui teste si une chane passe en paramtre est un palindrome ou non. Ex : palindrome("eluparcettecrapule") Vrai palindrome("bonjour") Faux 6- crire lalgorithme dune procdure qui transforme une chane donne en minuscules en majuscules. Ex min2maj("bonjour") "BONJOUR" 7- crire lalgorithme dune procdure permettant de supprimer toutes les voyelles dune chane de caractres. Exemple : sans_voyelle("programmation") "prgrmmtn" Pour sentraner 8- crire en langage algorithmique un sous programme permettant de compter et renvoyer au programme appelant le nombre de majuscules, de minuscules et de voyelles dans une chane de caractres passe en paramtre. 9- Codage / dcodage de csar : il sagit de transformer une chane de caractres en remplaant chaque lettre du texte original par une lettre distance fixe, toujours du mme ct, dans l'ordre de l'alphabet. Par exemple si on choisit un dcalage de 3 le a sera remplac par le d le b par le e et ainsi de suite jusquau z qui sera quant lui remplac par le c. crire en langage algorithmique un sous programme permettant deffectuer le codage de csar. Exemple CESAR FHVDU

LIF 1 TD 8 : Chanes de caractres


Objectifs : utiliser les chanes de caractres dans des programmes plus complexes, manipuler des chanes de caractres dans des tableaux.

1. Soit une chane de caractres constitue exclusivement de caractres numriques. On souhaite crire un programme permettant de compter le nombre doccurrences de chacun des caractres numrique et de fournir le rsultat sous forme dun tableau o on trouvera lindice i le nombre de caractres i dans la chane. Attention : une transformation de caractre en entier sera ncessaire. Exemple : "01230012340067080" devra produire le tableau suivant : 7
Nombre de 0

2
Nombre de 1

2
Nombre de 2

2
Nombre de 3

1
Nombre de 4

0
Nombre de 5

1
Nombre de 6

1
Nombre de 7

1
Nombre de 8

0
Nombre de 9

crire lalgorithme du sous-programme permettant de remplir le tableau prcdent. 2. Jeu du mmo Le jeu "mmo" est un jeu de mmoire qui consiste retrouver les paires dimages identiques dans une grille dimages retournes. Ici, les images seront reprsentes par les mots quelles signifient. La grille sera un tableau 2 dimensions.
1 1 2 3 4 2 3 4

Lion Lion Poule Vache

Chat Chien Oie Tigre

Chat Vache Canard Canard

Poule Oie Tigre Chien

a. crire en notation algorithmique et en C la dclaration du tableau de taille TAILLE_GRILLE*TAILLE_GRILLE contenant les chanes de caractres. TAILLE_GRILLE est pair pour que le nombre de cases dans la grille soit pair aussi. b. crire en C une procdure dinitialisation de la grille de jeu avec des "*" c. crire en C une procdure de remplissage de la grille. Cette procdure devra demander lutilisateur (TAILLE_GRILLE) / 2 chanes de caractres qui seront insres alatoirement dans la grille de jeu. Attention de bien vrifier que la grille est vide lendroit slectionn avant dinsrer le mot. d. crire en C une procdure demandant au joueur de choisir deux cases et dafficher le contenu de ces deux cases e. crire en C une fonction de vrification du choix de lutilisateur. Si les deux cases choisies sont identiques la fonction renverra 0 sinon elle renverra 1. Pour sentraner f. Simuler le jeu un joueur jusqu ce que toutes les paires aient t trouves.

LIF 1 TD 9 : Les structures


Objectifs pdagogiques : Manipulation des structures Application aux tableaux

Un tudiant sera identifi par son numro dtudiant, son nom, son prnom, sa date de naissance (qui sera dcompose en jour mois et anne de type entier) un tableau contenant les moyennes aux 5 UE prpares Numro dtudiant Nom tudiant Prnom tudiant Date de naissance - jour naissance - mois naissance - anne naissance Tableau de notes 10601234 DUPONT MARIE-CLAIRE 29 02 1988 12 15 17 13 14

1. crire en algorithmique et en C les structures de donnes ncessaires la dfinition dun tudiant et dune structure permettant la gestion de 1500 tudiants. Note : La date de naissance pourra tre stocke dans une structure a part. 2. crire en algorithmique les primitives suivantes : a. Saisie dun tudiant (remplissage des diffrents champs de la structure) b. Affichage des renseignements concernant un tudiant c. Remplissage du tableau dtudiants avec 1 tudiant. On fera appel Saisie_Etudiant. d. Affichage de tous les tudiants prsents dans le tableau. On fera appel Affiche_Etudiant. e. Affichage dun tudiant recherch par son nom dans le tableau. Pour sentraner 3. crire en algorithmique un sous programme permettant de calculer la moyenne des notes de la promotion entire. 4. crire en algorithmique un sous-programme permettant de calculer lge dun tudiant. 5. crire en algorithmique un sous programme permettant de calculer la moyenne dge de la promotion entire.

LIF 1 TD 10 : Le Dmineur

Objectifs :

rviser toutes les notions abordes jusqu prsent dans les travaux dirigs et travaux pratiques. Au travers dun exemple de conception, analyser un problme et concevoir sa solution pas pas.

Il sagit dans cette sance de TD ainsi que dans la sance de TP qui suivra (TP 8) de raliser un jeu de dmineur. Dans le TD, les dclarations de types et les sous-programmes demands devront tre crits en langage C/C++.

Principe du jeu : L' objectif est de trouver les mines qui sont caches alatoirement par l'ordinateur dans les cases du tableau. Si la case choisie contient une mine, la partie est perdue. Si la case choisie ne contient pas de mine alors apparatra un chiffre indiquant le nombre de mines qui se trouvent dans les 8 cases qui touchent directement la case slectionne. Par exemple si le numro dcouvert est un 2, cela indique qu' il y a 2 mines caches parmi les 8 cases qui touchent directement celle choisie. Attention : seul un affichage en mode texte sera demand. Construction du jeu : 1- Structures de donnes : a. Dfinir 3 constantes Taille_Grille_X, Taille_Grille_Y et Mines permettant de fixer les paramtres gnraux du jeu. Dans lexemple prcdent, on aura comme valeurs respectives (9, 9 et 10). b. Dfinir une structure case_grille comportant deux informations : un entier reprsentant le contenu de cette case (-1 si mine, 0..8 pour le nombre de mines dans les cases adjacentes) un boolen permettant de savoir si cette case a dj t choisie par lutilisateur. Cette valeur indiquera si la case doit tre dvoile lutilisateur lors de laffichage. c. Dfinir la grille de jeu comme tant un tableau 2D de case_grille. Pour des besoins ultrieurs, nous allons volontairement surdimensionner la grille de jeu en ajoutant une ligne supplmentaire en haut et en bas et une colonne supplmentaire droite et gauche. 2- Initialisation de la grille de jeu : crire un sous-programme permettant dinitialiser la grille de jeu. Pour chacune des cases de la grille du jeu, la valeur numrique sera initialise 0 et le boolen dcouvert la valeur "false".

3- Positionnement alatoire des bombes sur la grille de jeu : crire un sous programme permettant de positionner alatoirement Mines bombes sur la grille de jeu. Attention, avant de placer une mine, on vrifiera que la case est "libre". 4- Remplissage complet de la grille de jeu . Dans ce sous programme, nous allons pour chacune des cases (hors mine) compter le nombre de mines dans toutes les cases adjacentes. Pour viter une gestion trop complexe des cases du pourtour, nous avons, dans la dclaration, pris soin de rajouter des cellules supplmentaires. crire le sous programme permettant de remplir la grille avec ces valeurs. Exemple pour le calcul de la case i, j : j-1 i-1 i i+1 j 2 j+1

5- Affichage de la grille de jeu. La grille de jeu est stocke en interne sous forme dun tableau de structures case_grille contenant une valeur numrique (nombre de mines ou -1) et un boolen indiquant si la case doit tre affiche ou non. Pour rendre la grille plus lisible pour lutilisateur, les cases non dvoiles seront affiches avec le symbole -, les cases contenant une mine (-1) avec le caractre M et les autres cases avec la valeur numrique correspondant au nombre de mines dans les cases adjacentes. crire un sous programme permettant dafficher le contenu de la grille de jeu.: Exemple pour une grille de taille 5*5 avec 4 mines. 0/f 0/f 0/f 0/f 0/f 0/f 0/f 0/f 1/f 1/f 2/f -1/f 1/f 0/f 0/f 1/f -1/f 3/t 2/f 2/t 0/f 0/f 1/t 1/f 2/t -1/f 1/t 0/f 0/f 1/f 1/f 1/t 1/t 1/f 0/f 0/f -1/t 1/f 0/t 0/t 0/t 0/f 0/f 0/f 0/f 0/f 0/f 0/f 0/f 3 2 1 2 1 1 1 0 0 0

Grille stocke Jeu

Grille affiche

1- Choix dune case : crire un sous programme qui demande lutilisateur les coordonnes de la case sonder. 2- Jeu : crire le sous programme permettant de recommencer le choix dune case jusqu la fin de la partie. 3- Fin de partie : la partie sarrte quand toutes les cases ont t dcouvertes sauf celles contenant des mines (partie gagne) ou bien lorsquune mine est touche (partie perdue). crire le programme principal permettant de jouer au dmineur.

LIF 1 TD 11 : Les fichiers en C et rvisions


Objectifs : Rappels : Apprendre manipuler les oprations de base sur les fichiers : lecture et criture dans un fichier. Avant de lire ou dcrire des informations dans un fichier, il faut louvrir. Il existe plusieurs modes douverture dun fichier en fonction de lopration que lon souhaite raliser : ouverture en lecture, ouverture en criture et ouverture en lecture/criture. Une fois la lecture ou lcriture faite, il faut bien penser a fermer le fichier. Exemple en C pour ouvrir et crire dans un fichier { char nom[256] = "fichier.txt"; ofstream fichier; fichier.open(nom); if (! fichier.good() ) { cout << "Problme avec le fichier" << endl; exit(1); } fichier << "similaire cout sauf que ca passe dans le fichier!!" << endl; fichier.close(); } Exemple en C pour ouvrir et lire dans un fichier { char nom[256] = "fichier.txt"; ifstream fichier; char c; fichier.open(nom); if (! fichier.good() ) { cout << "Problme avec le fichier" << endl; exit(1); } fichier >> i; fichier.close(); } 1. Soit la structure tudiant dfinie de la manire suivante (cf TD 9). Un tudiant sera identifi par son numro dtudiant, son nom, son prnom, sa date de naissance (qui sera dcompose en jour mois et anne de type entier) un tableau contenant les moyennes aux 5 UE prpares crire en langage C une fonction permettant de recopier dans un fichier les informations concernant un tudiant.

crire en langage C la fonction duale permettant de rcuprer depuis un fichier les informations concernant un tudiant et de les stocker dans une structure.

2. Exercices de rvision : (extraits de la deuxime session de janvier 2007). crivez, en langage algorithmique, une fonction qui teste si une chane de caractres passe en paramtre est crite uniquement avec des majuscules ou uniquement crite avec des minuscules. Exemple Test_Min_Maj ("BONNEANNEE") VRAI Test_Min_Maj ("MELLeurSVOeuX") FAUX Test_Min_Maj ("bonnesant") VRAI crivez, en langage algorithmique une procdure permettant partir de deux nombres passs en paramtre de calculer le produit et la division de ces deux valeurs, ainsi quun code derreur permettant de savoir si la division a t possible (1) ou non (-1). Exemple prod_div(6,2) aura comme rsultats : 12, 3 et 1 prod_div(6,0) aura comme rsultats 0, -1 et -1

LIF 1 TD Rvision 2
Objectifs : revoir les notions abordes dans les TD 7 11 (chanes de caractres, structures, ..).

Nombres complexes
1- Dfinir en langage C un type complexe pour reprsenter les nombres complexes. On utilisera une structure deux champs pour la partie relle et la partie imaginaire d'un nombre complexe. 2- crire une fonction qui prend en paramtre deux flottants, et qui retourne un nombre complexe. (Remplissage de la structure) struct complexe cons_complexe( float r, float i ) 3- crire une fonction qui affiche un nombre complexe (sous la forme a+ib) void affiche_complexe( struct complexe c ) 4- crire les fonctions somme_complexe et produit_complexe d'addition et de multiplication de deux nombres complexes. On rappelle que : (a1+ib1)+(a2+ib2) = (a1+a2)+i(b1+b2) (a1+ib1)x(a2+ib2) = (a1xa2-b1xb2)+i(a2xb1+a1xb2).

Chanes de caractres
1- Soit C une chane de caractres. crivez lalgorithme dune procdure permettant de dupliquer chaque caractre de la chane autant de fois que sa position dans la chane. Attention bien rpter le 1er caractre 1 fois le second 2 fois, Exemple : bonjour boonnnjjjjooooouuuuuurrrrrrr 2- On souhaite comptabiliser le nombre doccurrences de chacun des caractres contenus dans une chane de caractres compose exclusivement des caractres alphabtiques minuscules. Pour cela, vous allez remplir un tableau dont chacune des 26 cases contiendra le nombre dapparitions dun caractre particulier dans la chane. Exemple : Soit la chane "voiciunechainecomposeeuniquementdeminuscules"
nombre de a nombre de b nombre de c nombre de d nombre de e nombre de f nombre de g nombre de h nombre de i nombre de j nombre de k nombre de l nombre de m nombre de n nombre de o nombre de p nombre de q nombre de r nombre de s nombre de t nombre de u nombre de v nombre de w nombre de x nombre de y nombre de z

Pour cela vous allez suivre la dmarche suivante : a- crire en C la dfinition dune constante MAX_CHAINE ayant pour valeur 50. b- crire en C un sous-programme permettant dinitialiser le tableau des nombres doccurrences avec des valeurs pertinentes. c- crire en C une fonction boolenne permettant de vrifier quune chane de caractres est bien constitue uniquement de caractres minuscules. d- crire en C un sous-programme permettant de remplir le tableau avec les nombres d'occurrences de chaque lettre de l'alphabet dans la chane de caractres, comme dcrit dans l'exemple.