structure compte { numero : entier nom : chaine de caractères adresse : chaine de caractères solde : reel } fonction saisirCompte() : compte { variable c : compte repeter { Afficher("Entrez le n° de compte") Saisir(c.numero) } jusqu'à (c.numero > 0) repeter { Afficher("Entrez le nom du titulaire") Saisir(c.nom) } jusqu'a (c.nom != "") Afficher("Entrez l'adresse du titulaire") Saisir(c.adresse) Afficher("Entrez le solde") Saisir(c.solde) retourne c } Algorithme Creation { variable f:Fichier c: compte i : entier Creer("comptes.dat",f) Ouvrir(f,ecriture) Pour i allant de 1 à 100 { c <-- saisirCompte() Ecrire(f,c) } Fermer(f) } procedure ajouterCompte(E f:Fichier) { variable c : compte Decaler(f,Fin_fichier,0) c <-- saisirCompte() Ecrire(f,c) } fonction afficherComptes(E f:Fichier):entier { variable c : compte nb : entier nb <-- 0 Decaler(f,Debut_fichier,0) Tantque (NON Fin(f)) { Lire(f,c) //Afficher(c.numero,":",c.nom,":",c.adresse,":",c.solde,"\n") AfficherCompte(c) nb <-- nb + 1 } retourne nb } procedure AfficherCompte(E c: compte) { Afficher(c.numero,":",c.nom,":",c.adresse,":",c.solde,"\n") } procedure trierComptes(E f:Fichier) { constante entier MAX<--100 variable t: tableau de MAX compte nb,j,i,min : entier tmp : compte smin : reel nb <-- 0 Decaler(f,Debut_fichier,0) // On charge le fichier dans le tableau Tantque (NON Fin(f)) { Lire(f,t[nb]) nb <-- nb + 1 } // On va trier ! Pour j allant de 0 à nb - 2 { smin <-- t[j].solde min <-- j Pour i allant de j+1 à nb-1 { Si (smin > t[i].solde) alors { smin <-- t[i].solde min <-- i } } Si (j!=i) alors { tmp <-- t[j] t[j] <-- t[min] t[min] <-- tmp } } Pour i allant de 0 à nb-1 { AfficherCompte(t[i]) } } procedure majComptes(E numero : entier, E f : Fichier) { variable c: compte trouve : booleen reponse : entier Decaler(f, DEBUT_FICHIER, 0) trouve <-- FAUX Tantque (NON (Fin(f)) ET NON (trouve) ) { Lire(f,c) Si (c.numero = numero) alors { trouve <-- VRAI } } Si (trouve) alors { repeter { Afficher("1) Modifier adresse\n") Afficher("2) Modifier solde\n") Afficher("0) Quitter\n") Saisir(reponse) Selon(reponse) { 1: Afficher("Veuillez saisir la nouvelle adresse :") Saisir(c.adresse) 2: Afficher("Veuillez saisir le nouveau solde :") Saisir(c.solde) 0: Afficher("--->[]\n") sinon : Afficher("Vous vous êtes trompé\n") } } jusqu'à (reponse = 0) Decaler(f, POSITION_COURANTE, -1) Ecrire(f,c) } } Algorithme HSBC { constante chaine nomfic <-- "comptes.dat" variable fcb: Ficher reponse, nbc, numero : entier Designer(nomfic,fc) Ouvrir(fc, lecture/ecriture) repeter { Afficher("1) Ajouter un compte\n") Afficher("2) Afficher les comptes\n") Afficher("3) Trier les comptes\n") Afficher("4) Mettre à jour un compte\n") Afficher("0) Pour sortir\n") Saisir(reponse) Selon (reponse) { 1: ajouterCompte(fc) 2: nbc <-- afficherComptes(fc) Afficher("il y a ", nbc, " comptes dans le fichier.\n") 3: trierComptes(fc) 4: Afficher("Veuillez saisir le numero de compte à mettre à jour : ") Saisir(numero) majCompte(numero,fc) } } Fermer(fc) }