TDS et exercices

download TDS et exercices

of 43

Transcript of TDS et exercices

  • 8/8/2019 TDS et exercices

    1/43

    Exercices AlgorithmePour les solutions et plus dexercices

    visite le site suivant :

    http://forall3.tk

    http://forall3.tk/http://forall3.tk/
  • 8/8/2019 TDS et exercices

    2/43

    Exercices simples

    Exercice 1 :

    Ecrire un algorithme dune action qui change deux variables A et B

    Action : Echange

    Var : A, B, C : rels

    Dbut : Ecrire ( Saisissez deux variables )

    Lire (A, B)

    C

  • 8/8/2019 TDS et exercices

    3/43

    1 Exercice en utilisant les structures SIALORSSINON et SELONQUE

    Exercice 3 :

    Ecrire une action qui fournit les flicitations ou lajournement dun lve suivant

    sa note en utilisant Si-alors-sinon.

    Action : Jury

    Var : note : rel

    Dbut : lire (note)

    Si note

  • 8/8/2019 TDS et exercices

    4/43

    Et

    Action : Valeur_absolue2

    Var : A, B rels

    Dbut : Ecrire ( saisissez 2 rels )Lire (A, B)

    Ecrire ( les valeurs de A et B sont : , valAbs(A), et , valAbs(B))

    Ecrire 5 :

    Faire un programme qui donne le volume dun cylindre en faisant appel une

    fonction aire dun cercle.

    Fonction : aire_cercle (rayon : rel) : rel

    Var : Aire : rel

    Const : PI=3.14

    Dbut : Aire

  • 8/8/2019 TDS et exercices

    5/43

    Action : seconddegr

    Var : a, b, c, delta

    Dbut : Ecrire ( saisissez les valeurs a, b et c de lquation ax+bx+c=0 : )

    Lire (a, b, c)

    Si a=0 alors crire ( quation du premier degr )Sinon delta0 alors crire ( les solutions de lquation sont , (-b-sqrt

    (delta))/ (2*a), et , (-b+sqrt (delta))/ (2*a))

    Sinon

    Dbut

    Si d=0 alors crire (-b/ (2a))

    Sinon crire ( pas de solutions relles )

    Fin

    Fin

    Fin

    Ecrire le mme algorithme avec des selon-que :

    Action : seconddegr

    Var : a, b, c, delta

    Dbut : Ecrire (saisissez les valeurs de a, b et c de lquation ax+bx+c)

    Lire (a, b, c)

    Si a=0 alors crire ( rsoudre permier degr )Sinon dbut

    Delta 0 : crire ((-b-sqrt (delta))/ (2*a), (-b+sqrt (delta))/ (2*a))

    Delta = 0 : crire ((-b/ (2a))

    Sinon crire ( pas de solution relle )

    Fin selon

    Fin

    Exercice 8

    Ecrire un algorithme qui donne la dure de vol en heure minute connaissant

    lheure de dpart et lheure darrive.

    1) on considre que le dpart et larrive ont lieu mme jour

    2) idem mais sans faire les conversions en minutes

    3) on suppose que la dure de vol est infrieure 24 heures mais que

    larrive peut avoir lieu le lendemain.

    5

  • 8/8/2019 TDS et exercices

    6/43

    1)

    Action : DureVol1

    Var : h1, h2, m1, m2, hr, mr : entiers

    Dbut : Ecrire ( entrer horaire de dpart et darrive )

    Lire (h1, m1, h2, m2)mr

  • 8/8/2019 TDS et exercices

    7/43

    Ecrire (hr, mr)

    Sinon

    hr c alors max3

  • 8/8/2019 TDS et exercices

    8/43

    Fonction : max3 (a, b, c : entier) : entier :

    Var : max3 : entier

    Dbut : max3

  • 8/8/2019 TDS et exercices

    9/43

    Dbut : Ecrire ( avez-vous le permis ? (0/1) )

    Lire (permis)

    Ecrire ( avez vous une voiture ? (0/1) )

    Lire (voiture)

    Si non permis ou voiture alorsSi voiture alors crire ( conduisez moi la gare )

    Sinon crire ( jai une voiture pas chre )

    Sinon

    Si voiture alors crire ( vous tes hors la loi )

    Sinon crire ( vive le vlo )

    fin

    1) Ecrire larbre des conditionnelles

    2) Corriger les tests pour que tous les cas soient couvert de manire

    cohrente

    3) Faites correspondre les actions et les tests correctement

    4) Si possible, crire cet algorithme avec des selon que.

    Permis et voiture permis voiture Ni permis ni

    voiture

    gare Vive le vlo Conduisez moi la

    gare

    Voiture pas chre

    Conduisez moi la

    gare

    Voiture pas chre Hors la loi Vive le vlo

    En clair, selon lalgorithme propos : si lon a le permis et la voiture on peut

    amener quelquun la gare ; si lon a que le permis on dit vive le vlo, si lon

    na que la voiture on conduit aussi la gare, enfin si lon a ni permis ni voiture

    alors on achte une voiture pas chre. Le cas hors la loi nest pas voqu et les

    correspondance sont inexactes. Il faut videmment avoir :

    - permis et voiture : conduire la gare

    - permis : jai une voiture pas chre- voiture : vous tes hors la loi

    - ni voiture, ni permis : vive le vlo

    Correction de lalgorithme propos :Action : Permis_voiture

    Var : permis, voiture : boolen

    Dbut : Ecrire ( avez-vous le permis ? (0/1) )

    Lire (permis)

    Ecrire ( avez vous une voiture ? (0/1) )Lire (voiture)

    9

  • 8/8/2019 TDS et exercices

    10/43

    Si permis ou voiture alors

    Si voiture alors crire ( conduisez moi la gare )

    Sinon crire ( jai une voiture pas chre )

    Sinon

    Si voiture alors crire ( vous tes hors la loi )Sinon crire ( vive le vlo )

    On peut effectivement crire cet algorithme avec des selon-que :Action : permis_voiture

    Var : permis voiture : rel

    Dbut : Ecrire ( avez-vous le permis ? (0/1) )

    Lire (permis)

    Ecrire ( avez vous une voiture ? (0/1) )

    Lire (voiture)

    Selon que :

    Permis et voiture : crire ( conduisez moi la gare )

    Permis et non voiture : crire ( jai une voiture pas chre )

    Non permis et voiture : ( vous tes hors la loi )

    Non permis et non voiture : ( vive le vlo )

    Fin

    Exercice 12Ecrire un programme calculatrice permettant la saisie de deux entiers et une

    opration boolen- ( +, - , / , x ) et affichant le rsultat. Donner avant cela les

    spcifications, la solution en langage naturel, les structures de donnes.

    Spcifications :

    Donnes : 2 oprandes et un oprateur

    Rsultat : rsultat de lopration choisie

    Solution en langage naturel : Saisie des donnes, envisager tous les cas : +, - ,x, /. Attention la division par zro qui est impossible

    Structure de donnes : 2 oprandes : des entiers

    Un oprateur boolen : +, -, * , /

    Algorithme :

    Action : calcul

    Var : a, b : rel op : boolenDbutEcrire ( saisissez le premier entier )

    10

  • 8/8/2019 TDS et exercices

    11/43

    Lire (a)

    Ecrire ( saisissez loprateur )

    Lire (op)

    Ecrire ( saisissez la deuxime variable )

    Lire (b)Selon que :

    Op = + : Ecrire (a+b)

    Op = * : Ecrire (a*b)

    Op = / : Si b= 0 alors crire ( division impossible )

    Sinon crire (a/b)

    Op = - : Ecrire (a-b)

    Fin selon

    Fin

    11

  • 8/8/2019 TDS et exercices

    12/43

    2 exercices en utilisant les structures rptitives TANT QUE et

    REPETERJUSQU'A et POUR

    Exercice 13

    Ecrire le programme qui affiche la somme dune suite dentiers saisie par

    lutilisateur se terminant par zro.

    Exemple : lutilisateur entre 1, puis 5, puis 2, puis 0 : affiche : 8

    1) donner les spcifications

    2) donner la solution en langage naturel

    3) indiquer les structures de donnes

    4) faites lalgorithme

    Spcifications :

    - donnes : suite de nombre entiers se terminant par zro

    - rsultat : la somme de ces entiers

    Solution en langage naturel : tant que lentier saisi nest pas zro, lajouter la

    somme partielle et saisir lentier suivant.

    Structure de donnes :

    - entier : entier courant (saisi)

    - entier : somme partielle

    Algorithme :

    Action : Somme Suite

    Var : a, s : entiers

    Dbut s

  • 8/8/2019 TDS et exercices

    13/43

    Ecrire un algorithme qui affiche la moyenne dune suite dentiers se terminant

    par zro (le zro nentrant pas en compte dans la moyenne : il est juste la pour

    indiquer la fin de saisie)

    1) donner les spcifications

    2) donner la solution en langage naturel3) indiquer les structures de donnes

    4) faites lalgorithme

    Spcification :

    - donnes : suite dentier se terminant par zro

    - rsultat : la moyenne de ces entiers (zro exclu)

    Solution en langage naturel :

    Tant que lentier saisi diffrent de 0 alors ajouter lentier aux entiers prcdents

    et faire la moyenne (cest dire diviser par le nombre dentiers

    Structures de donnes :

    - entier : entier saisi

    - entier : rsultat moyenne

    Algorithme :

    Action : Moyenne

    Var : n, moy, s : entiers

    Dbut : moy

  • 8/8/2019 TDS et exercices

    14/43

    4) faites lalgorithme

    Spcifications :

    - donnes : suite dentier se terminant par zro

    - rsultat : vrai si deux entiers conscutifs, faux sinon.

    Solution en langage naturel : comparer lentier courant et le prcdent. Et tant

    que ils sont diffrents, on continu la lecture et tant que lentier courant est

    diffrent de zro.

    Structures de donnes :

    - entier : nombre courant

    - entier : nombre prcdent

    Algorithme :

    Action : Entiers conscutifs

    Var : nc, np : entier

    {on dsignera par nc le nombre courant et np le nombre prcdent}

    DbutLire (nc)

    np

  • 8/8/2019 TDS et exercices

    15/43

    jusqu' (nc=np ou nc=0)

    Si nc=0 alors crire ( oui )

    Sinon crire ( non )

    Fin

    Exercice 16

    Ecrire un algorithme qui affiche le maximum dune suite se terminant par zro

    1) donner les spcifications

    2) donner la solution en langage naturel

    3) indiquer les structures de donnes

    4) faites lalgorithme

    Spcifications :

    - donnes : une suite dentiers se terminant par zro

    - rsultat : un entier : le maximum de cette suite

    Solution en langage naturel : comparer lentier courant avec le maximum et tant

    que nc

  • 8/8/2019 TDS et exercices

    16/43

    Le premier utilisateur saisi un entier que le second doit deviner. Pour cela, il a le

    droit autant de tentatives quil souhaite. A chaque chec, le programme lui

    indique si lentier cherch est plus grand ou plus petit que sa proposition.

    Un score indiquant le nombre de coups jous est mis jour et affich lorsque

    lentier est trouv.1) donner les spcifications

    2) donner la solution en langage naturel

    3) indiquer les structures de donnes

    4) faites lalgorithme

    Spcifications :

    - donnes : nombre entier

    - rsultat : nombre de tentatives

    Solution en langage naturel : saisir un nombre entier par le premier joueur. Tant

    que le joueur 2 n saisie, dire si n est > ou < nombre cherch, incrmenter de 1

    et continuer. Quand le rsultat est trouv, afficher le nombre de tentatives.

    Structures de donnes :

    - a : nombre saisi par lutilisateur 1

    - n : nombre saisi par lutilisateur 2

    - t : tentatives

    Algorithme :

    Action : devinette

    Var : a, n, t : entiers

    Dbut : Lire (a)

    Lire (n)

    t=0

    Tant que a n faire

    Dbut

    Si n>a alors crire ( nombre cherch plus petit )

    Sinon crire ( nombre cherch plus grand )t

  • 8/8/2019 TDS et exercices

    17/43

    Ecrire un algorithme permettant de calculer le PGCD de deux nombres en

    utilisant lastuce suivante : soustraite le plus petit des deux entiers du plus grand

    jusqu' ce quils soient gaux

    Ecrire le mme programme en utilisant lalgorithme dEuclide : dune part en

    utilisant uniquement les structures TANT QUE, dautre part en utilisantuniquement les structures REPETER JUSQU'A.

    Action : PGCD

    Var : a, b entiers

    Lire (a, b)

    Dbut

    a = ValAbs (a)

    b = ValAbs (b)

    Rpter

    Selon que

    a>b a

  • 8/8/2019 TDS et exercices

    18/43

    jusqu' r=0

    crire (b)

    fin

    Exercice 19

    Ecrire avec la commande POUR un algorithme qui permet de faire la somme

    dune suite de nombre entre par lutilisateur. Faire la mme chose en comptant

    par pas de 1.

    Action :somme_nombre

    Var : k, nb, n, somme : entier

    Dbut :

    Somme

  • 8/8/2019 TDS et exercices

    19/43

    Var : k, nb : entiers

    Dbut

    Lire (nb)

    Pour k de 1 nb faire

    Ecrire (k)Fin

    Action : Bidon

    Var : k, nb : entier

    Dbut

    Lire (nb)

    K0 alors

    Rpter crire (k)

    Knb

    Fin

    Exercice 21

    Ecrire une fonction qui fait la somme des entiers compris dans un intervalle.

    Fonction : intervalle (a, b ; entiers) : entier

    Var : k, somme : entierDbut

    Somme

  • 8/8/2019 TDS et exercices

    20/43

    20

  • 8/8/2019 TDS et exercices

    21/43

    3 exercices sur les Tableaux

    Exercice 23

    Ecrire une action qui permette la saisie dun tableau croissant : si T[k]T[k+1] on redemande la saisie dun nombre plus grand

    Const : MAX=100

    Ttype : Ttab=tableau [max]dentier

    Action : saisie_tableau_croissantVar : tab : Ttab, i : entier

    Dbut

    Lire (Tab[0])

    Pour i de 1 MAX-1 faire

    Rpter lire (tab[i])

    jusqu' tab[i] tab[i-1]

    Fin

    Exercice 24

    Ecrire une fonction retournant le maximum dun tableau de taille n.

    Faire le mme algorithme mais qui ne retourne que lindice de la case du tableau

    contenant le maximum du tableau.

    Fonction : maximum (tab : Tableau dentier n :entier) : entier

    Var : max, i : entiers

    Dbut

    Max max alors max

  • 8/8/2019 TDS et exercices

    22/43

    Pour i de 1 n-1 faire

    Si tab[i]>max alors

    max

  • 8/8/2019 TDS et exercices

    23/43

    4 Exercices gnraux sur les actions paramtres

    Exercice 25

    Ecrire une fonction Afficher qui affiche a lcran le contenu dun tableau. Ecrire

    aussi laction principale qui permettra de comprendre comment fonctionne cette

    fonction afficher.

    {Ne pas oublier dindiquer les paramtres du tableau !}

    Const : MAX : entier=100Type : Ttab : Tableau [MAX] dentier

    Fonction Afficher (tab : tableau dentiers, n entiers)

    Var : i entier

    Dbut :

    Pour i de 0 n-1

    Ecrire (tab[i], )

    Fin

    Action principale

    Var t1 t2 : Ttab

    Dbut

    T1[0]

  • 8/8/2019 TDS et exercices

    24/43

    Ecrire une fonction qui permet la saisie dun tableau. Faite aussi laction

    principale qui permettra daccder a cette fonction saisie mais aussi dafficher

    dans un second temps le rsultat

    Fonction : saisie (Stab : tableau dentiers, N :entier)Var : i entier

    Dbut :

    Pour i de 0 n-1 faire

    Lire (tab[i])

    Fin

    Action principale

    Var : tabl : Ttab

    Dbut

    Saisie (toto, 10)

    Afficher (toto, 10)

    Fin

    Ou afficher est la fonction de lexercice 1.

    Exercice 27

    Ecrire une fonction qui calcule le nombre dinversion dun tableau de taille n

    (cest dire itab[j] pour tout i et j.)

    Fonction inversion (tab : tableau dentiers, N entier)

    Var : j, C, i entiers

    Dbut

    Ctab[j] alors C

  • 8/8/2019 TDS et exercices

    25/43

    Aide : stocker les lments dans un tableau toto avec toto[0]=1. Puis on utilise

    une boucle imbrique pour calculer toto[n+1]=somme k=0 k=n de

    toto[k]*toto[n-k].

    Action Suite (E : d :entier)Var : toto : Ttab, i, k : entiers

    Dbut :

    Toto[0]

  • 8/8/2019 TDS et exercices

    26/43

    Action : inverser (ES : tab : tableau dentiers, E : n : entier)

    Var : i :entier

    DbutPour i de 0 n/2 1 faire

    Echanger (i, n-1-in tab, n)

    {ou Echanger est la deuxime action de cet exercice}

    Fin

    26

  • 8/8/2019 TDS et exercices

    27/43

    5 Entits : types structurs

    Explications 1 :

    Les types structurs sont :

    - les tableaux (voir les exercices prcdents)

    - les entits (ou lon regroupe plusieurs types sous un mme objet)

    Exemple :

    Etudiant (nom, groupe, note)

    Type : Etd : entit (

    Nom : chane de caractre ;Groupe : caractre ;

    Note : entier ;

    ) ;

    Pour faire appel ce type dentit on fera dans la fonction :

    Var : Tetd toto ;

    Toto.nom=alex

    Toto.groupe=A

    Toto.note=15

    Ecrire ( ltudiant , toto.nom, du groupe , toto.groupe, a eu , toto.note)

    Exercice 30

    Proposer une entit de donnes pour stocker un point dans le plan

    Type : Tpoint=Entit (

    abs : entier ;

    ord : entier ;

    )

    Exercice 31

    Ecrire les en-ttes des fonctions/actions suivantes :

    - saisie dun point

    - affichage dun point

    - calcul de la distance entre deux points

    - projection dun point sur laxe des abscisses

    Ecrire ensuite les algorithmes de ces fonctions.

    27

  • 8/8/2019 TDS et exercices

    28/43

  • 8/8/2019 TDS et exercices

    29/43

    Tab : tab[MAX] dentier

    Taille : entier

    )

    Ainsi, dans une fonction, on aura :TtabVar : toto

    Toto.tab[15]

  • 8/8/2019 TDS et exercices

    30/43

    Ecrire un algorithme qui permet de rentrer un tableau de taille variable de Tpoint

    (voir exercice 30 et 31). Pour cela, il faudra au pralable crer un nouveau type

    dentit.

    Const MAX=100Type TtabVarPt=entit (tab : tableau[MAX] de Tpoint, taille : entier)

    Action : SaisieTtabVarTpoint (S : tabvarPt : TtabVarTpoint)

    Var : rponse : chane de caractre

    Dbut

    Tabvar.taille

  • 8/8/2019 TDS et exercices

    31/43

    Ecrire ( llment le plus au nord est , AfficherTpoint(toto.tab[n])

    {ou AfficherTpoint est la fonction de

    lexercice 31}

    Ecrire( llment le plus louest est , AfficherTpoint(toto.tab[o])

    Fin

    Exercice 35

    Ecrire un algorithme qui dtermine la distance maximale entre deux points dun

    tableau de Tpoint

    Action DistMax (E : tvp : TtabVarPt)

    Var : i, j : entiers ; Dmax, dist : reels

    Dbut

    Dmax

  • 8/8/2019 TDS et exercices

    32/43

    6 Tableaux tris et dcoupages fonctionnels

    Exercice 36

    Le but de lexercice est de crer une action de saisie de tableau, qui trie, au fur et

    mesure des entres, les valeurs par ordre croissant dans le tableau.

    Exemple :

    Soit le tableau suivant :

    0 1 2 3

    2 5 7 9

    Comment insrer 6 dans le tableau tri (en supposant quil ny a pas de doublon

    dans le tableau) ?- je cherche la bonne position (ici : la case dindice 2)

    - dcalage droite si ncessaire :

    0 1 2 3 4

    2 5 7 7 9

    - Insertion de llment

    0 1 2 3 4

    2 5 6 7 9

    On a donc ici le dcoupage fonctionnel :

    On va donc crer une fonction IndiceEltSup qui cherche la bonne position, une

    action Insrer qui inclue le nombre entr dans la bonne case du tableau, et une

    action DcalageDroite qui dcale comme dans lexemple toutes les cases dun

    rang vers la droite si ncessaire.

    Const MAX=100

    Type TtabVar = entit (tab : tableau[MAX] dentiers, taille : entier)

    Fonction IndiceEltSup (tvt : TtabVar, entier, n : entier) : entier

    Var : i : entier

    Dbut

    Tant que (i tvt.taille ET tvt.tab[i]

  • 8/8/2019 TDS et exercices

    33/43

    Pour j de tvt.taille 1 i par pas de 1 faire

    Tvt.tab[j+1]

  • 8/8/2019 TDS et exercices

    34/43

    Bsupn alors Bsup

  • 8/8/2019 TDS et exercices

    35/43

    7 Les Chanes

    On va maintenant faire des exercices sur les chanes de caractres.

    En pratique on pourra dfinir une chane de caractres de deux manires :

    Const MAX entier = 100

    Type Tchaine = entit ( tab : tableau[MAX] de caractres

    Longueur : entier)

    Ou bien :

    Const MAX entier = 100

    Type Tchaine = tableau [MAX] de caractres

    {Avec la sentinelle END}

    Exercice 39

    Faire un algorithme qui dtermine la longueur dune chane de caractres.

    Faire ensuite de deux manires diffrentes, une fonction qui permet de copier la

    chane dune source dans une chane destination.

    Fonction Longueur (chaine : Tchaine) : entier

    Var i : entier

    Dbut

    i0

    Tant que chaine[ i ] != END faire i i+1

    Retourner (i)

    Fin

    Fonction de copie : premire mthode :Fonction Copier (E : src : Tchaine, S : dest : Tchaine)

    Var i, Lsrc : entier

    Dbut

    LsrcLongueur(src)

    Pour i de 0 Lsrc faire dest[ i ]src [ i ]

    Fin

    Fonction de copie : deuxime mthode : plus optimise :Fonction CopieOptimise (E : src : Tchaine, S : dest : Tchaine)

    35

  • 8/8/2019 TDS et exercices

    36/43

    Var i : entier

    Dbut

    i0

    tant que src[ i ] != END faire

    dest [ i ] src [ i ]i i+1

    dest [ i ] src [ i] {pour copier en fin de fichier la sentinelle}

    Fin

    Exercice 40

    Faire une fonction de concatnation (ajoute la fin de la premire chane de

    caractres le contenu de la deuxime chane de caractres.)

    Faire une fonction de Comparaison qui compare deux chanes de caractressuivant lordre lexicographique.

    Faire une fonction qui efface une partie de la chane en spcifiant une longueur

    deffacement et un indice partir duquel il faut effacer.

    Action Concatnation (ES : src1 : Tchaine, E : src2 : Tchaine)

    Var i, Lsrc1 : entiers

    Dbut

    i0

    LsrcLongueur (src1)Tant que src2 [ i ] != END

    Src1[ Lsrc1+i] src2[ i ]

    ii+1

    src1[Lsrc1+i]src2[ i ]

    Fin

    Pour faire la fonction comparer, il faut dabord crer une fonction qui compare

    les caractres :Fonction ComparerChar (char a, char b)

    Dbut

    Si ab retourner (1)

    Fin

    On peut maintenant faire la fonction de comparaison de chanes de caractresqui utilisera la fonction ComparerChar :Fonction Comparer (E : src1 : Tchaine, E : src2 : Tchaine)

    36

  • 8/8/2019 TDS et exercices

    37/43

    Var i, L1, L2, cmp : entiers

    Dbut

    L1Longueur (src1)

    L2Longueur (src2)

    I0Tant que (i

  • 8/8/2019 TDS et exercices

    38/43

    Faire une action qui changent toutes les occurrences dune chane dans une

    chane de caractres par une autre chane tampon.

    Action MultidcalageDroite (ES : src : Tchaine, E : indice : entier, E : lg : entier)

    Action Insrer (ES : src : Tchaine, E : indice : entier, E : motif : Tchaine)

    Var i, Lsrc, Lmotif : entier

    Dbut

    LmotifLongueur(motif)

    MultidcalageDroite (src, indice, Lmotif)

    Pour i de 0 Lmotif-1 faire

    src[indice+i]motif[ i ]

    Fin

    Action Remplacer (ES : src : Tchaine, E indice : entier, E lg : entier, E : motif :

    Tchaine)

    Dbut

    Effacer (src, indice, lg)

    Insrer (src, indice, motif)

    Fin

    Fonction Recherche (src : Tchaine, motif : Tchaine, Binf : entier)

    Var : i, Lsrc, Lmotif : entiers

    Tampon : Tchaine

    Dbut

    LsrcLongueur (src)

    LmotifLongueur(motif)

    iBinf

    Extraire (src, i, Lmotif, tampon)

    Tant que (i

  • 8/8/2019 TDS et exercices

    39/43

    LnouveauLongueur (nouveau)

    Indice Recherche(src, ancien, i)

    Tant que indice -1 faire

    Remplacer (src, indice, Lancien, nouveau)

    iindice+LnouveauindiceRecherche(src, ancien, i)

    Fin

    39

  • 8/8/2019 TDS et exercices

    40/43

    8 Les fichiers

    Rappelons tout dabord comment on manipule les fichiers en ASD.

    On ne manipule que les identificateurs de fichiers. On ne se soucie donc pas des

    fichiers sources.

    Pour ouvrir un fichier :OuvrirFichier (IdFic, ModeOuverture)

    Avec ModeOuverture = lecture ou criture ou rajout.

    Pour fermer un fichierFermerFichier (IdFic)

    Pour lire un fichier

    LireFichier (IdFic, lment) cela correspond Lire(n) cin>>n

    Pour crire un fichier

    EcrireFichier (IdFic, lment) cela correspond Ecrire(n) cout

  • 8/8/2019 TDS et exercices

    41/43

    Fin

    Action EntiersPairsFichier (E : f1 : fichier dentiers, ES : f2 : fichier dentiers)

    Var n : entier

    DbutOuvrirFichier (f1, lecture)

    Si EtatFichier (f1) = succs alors

    OuvrirFichier (f2, criture)

    Si EtatFichier (f2) = succs alors

    LireFichier (f1, n)

    Tant que EtatFichier(f1) FdF faire

    Si n%2=0 alors EcrireFichier(f2, n)

    LireFichier (f1, n)

    FermerFichier(f2)Sinon crire ( Erreur en criture )

    FermerFichier (f1)

    Sinon crire ( Erreur en lecture )

    Fin

    Fonction Recherche (x : entier, f : fichier dentiers) : boolen

    Var bool rep false

    Dbut

    OuvrirFichier (f, lecture)

    Si EtatFichier(f)=succs alors

    LireFichier(f, n)

    Tant que (EtatFichier(f) FdF ET n x) faire

    LireFichier(f, n)

    Si n=x alors rep true

    FermerFichier (f)

    Sinon Ecrire ( Erreur en lecture )

    Fin

    Exercice 43

    Faire une action de fusion de deux fichiers dentiers. Le fichier de sortie doit

    tre tri.

    Action Fusion ( E : f1 : fichier dentiers, E : f2 : fichier dentiers, S : f3 : fichier

    dentiers)

    Var : f3 : fichier dentiers

    DbutOuvrirFichier (f1, lecture)

    41

  • 8/8/2019 TDS et exercices

    42/43

    Si EtatFichier (f1)=succs alors

    OuvrirFichier (f2, lecture)

    Si EtatFichier (f2)=succs alors

    OuvrirFichier (f3, criture)

    Si EtatFichier (f3)=succs alorsLireFichier (f1, n1)

    LireFichier (f2, n2)

    Tant que (EtatFichier(f1) FdF ET

    EtatFichier(f2) FdF) faire

    Si n1

  • 8/8/2019 TDS et exercices

    43/43

    Ecrire une fonction qui permet de saisir un groupe dtudiant dans un fichier.

    Ecrire une fonction qui permet de calculer la moyenne gnrale dun groupe

    dtudiant.

    Action SaisieGroupe (E : nb : entier, S : Fic : fichier de Tetd)

    Var : etd : Tetd i : entier

    Dbut

    OuvrirFichier (fic, criture)

    Si EtatFichier (fic)=succs alors

    Pour i de 1 nb faire

    EtdSaisieEtd( )

    EcrireFichier (fic, etd)FermerFichier (fic)

    Sinon crire ( Erreur )

    Fin

    Fonction Moyenne (fic : fichier de Tetd ) : rel

    Var : Som : rel

    Dbut

    Som0

    nb 0

    OuvrirFichier (fic, lecture)

    Si EtatFichier (fic)=succs alors

    LireFichier (fic, etd)

    Tant que EtatFichier (fic) FdF) faire

    nbnb+1

    SomSom + etd.moyenne

    LireFichier(fic, etd)

    Retourner (Som/nb)

    FermerFichier (fic)

    Sinon crire ( Erreur )

    Fin