Solution exo1 :

Algorithme Diviseurs (* version pour *)

Var  n, i, nb : Entier

Début

      Ecrire(”Entrer un entier positif : ”) LireNo

       Nb ß0 ;

      Pour i de 1 à n Faire                                                 

                     Si(n Mod i = 0) Alors    nbßnb+1 ;        

                     FinSi

      FinPour

      Ecrire(nb) ;

Fin.

Nombre d’instructions en pire des cas:

                        TNo=1+(n+1)+(n+1)+n+n

                        TNo= 4n+3

 

Solution exo2 :

Solution Algorithme Facto

Var n, i, f : Entier;

Début

   Ecrire(”Entrer un entier positif : ”) ;                                         

   LireNo ;                                                                                     

   f ß1 ;                                                                                          

   Pour i de 2 à n Faire   (n+1)                                                                                            

                f ßf * i ;                                                                                      

   FinPour

               Ecrire(n,”! = ”,f)

Fin.

Nombre d’instruction en pire des cas :

TNo=1+2n+2+n

TNo=3n+3

Solution exo 3 :

AlgorithmePremier

          Var n, i, nb_div : Entier;

      Début

            Ecrire(”Entrer un entier positif : ”) LireNo

             nb_div ß 0                       

              i ß 1            

 TantQue (i <= n) Faire             

         Si(n Mod i = 0) Alors                

         nb_div ß nb_div + 1            

    FinSi

        i ß i + 1                                       

 FinTQ

    Si(nb_div <= 2) Alors  Ecrire(”C’est un nombre premier”)                             

             Sinon Ecrire(”Ce n’est pas un nombre premier”) ;                                            

   FinSi

Fin.

Nombre d’instruction en pire des cas :

TNo=1+1+n+1+n+nb_div+n+2

TNo=3n+5+nb_div.

Solution exo 5 :

Algorithme inverse

Var i, N : Entier

 ch1, ch2 : Chaîne

Début

 Ecrire(”Entrer une chaîne : ”) ; Lire(ch1) ;

                 N ß Long(ch1) ;                                                       

                   ch2 ß ”” ;           

  Pour i de N à 1 Faire                                                                             

      ch2 ß ch1[i] + ch2 ;          

  FinPour

  Ecrire(”Inverse de la chaîne = ”,ch2)

Fin.

Nombre d’instruction en pire des cas :

-          TNo=1+1+n+1+n+1+ n

-          TNo=3n+4.

Solution exo 6 :

Algorithme Comptage_Mots

Var i, N, nb_mot : Entier

phrase : Chaîne

Début

 Ecrire(”Entrer une phrase non vide : ”) Lire(phrase)

        N ß Long(phrase)

        nb_mot ß 1

Pour i de 1 à N Faire

        Si (phrase[i] = ” ”) Alors

         nb_mot ß nb_mot + 1

FinSi

FinPour

 Ecrire(”Nombre de mots = ”,nb_mot)

Fin.

Nombre d’instruction en pire des cas :

TNo=1+1+n+1+n+1+n+nb_mot

TNo=3n+4+nb_mot.

Solution exo 7 :

AlgorithmePalind

Var  ch : Chaîne ;  i, L : Entier ;  Pal : Booléen ;

Début

Ecrire(”Entrer une chaîne non vide : ”) Lire(ch)

L ß long(ch);     Pal ßVrai;        i ß1;

  TantQue(i <= L/2) et (Pal) Faire

       Si(ch[i] = ch[L-i+1]) Alors

             i ßi + 1

     Sinon

        Pal ß Faux

     FinSi

  FinTQ

          Si(Pal) Alors  Ecrire(ch, ” est un palindrome”)

          Sinon Ecrire(ch, ” n’est pas un palindrome”) FinSi

Fin

Solution exo 8 :

Procédurefréqunece(bigram:Chaîne[2] ; chn :Chaîne ; Var nb : Entier)

Var : i, L : Entier

Début

LßLong(chn)

Nbß0

   Pour i de 1à (L-1) Faire

         Si (chn[i]=bigram[1]) ET (chn[i+1]=bigram[2])

    Alors  nb ß nb + 1

  FinSi

 FinPour

Fin

Cette procédure possède un seul paramètre résultat de type entier, donc elle peut être remplacée par une fonction.

Fonctionfréqunece(bigram:Chaîne[2] ; chn :Chaîne) : Entier

Variables

 i, L : Entier

Début

L ßLong(chn)

nb ß 0

Pour i de 1à (L-1) Faire

Si (chn[i]=bigram[1]) et (chn[i+1]=bigram[2])

Alors

nb ß nb + 1

FinSi

FinPour

fréquence ß nb

Fin

Solution 9 :

Procédure SomMat(M1, M2 : Mat ; Var M3 : Mat)

Variables

 i, j : Entier

Début

Pouri de1 àn Faire

Pour jde 1à mFaire

M3[i,j] ß M1[i,j]+ M2[i,j]

FinPour

FinPour

Fin

 

 

 

Solution produit de deux matrices :

Procédure ProdMat(M1 : Mat1; M2 : Mat2; Var M3 : Mat3)

Var i, j, k : Entier

Début

Pour i de1 àn Faire

Pour jde 1à pFaire

      M3[i,j] ß 0

Pour k de1 àm Faire

     M3[i,j]ß M3[i,j]+M1[i,k]*M2[k,j]

FinPour

FinPour

FinPour

Fin

 

Solution exo 10 :

Solution Algorithme Premiers

Constantes

n = 400

Types

 Tab = Tableau[1..n] de Entier

Variables

 Prem : Tab

 i, j : Entier

Procédure initialiser(Var T : Tab)

Début

Pour i de1 àn Faire

T[i] ¬i

FinPour

Fin

Procédure mise_a_zero(Var T : Tab)

Début

  Pour i de1 à20 Faire

       Si(T[i] # 0) Alors

   Pour j dei+1 àn Faire

        Si(T[j] Mod T[i] = 0) Alors

         T[j] ß 0

       FinSi

   FinPour

  FinSi

FinPour

Fin

Procédure afficher(T : Tab)

Début

Pour i de1 àn Faire

    Si(T[i] # 0) Alors

    Ecrire(T[i])

  FinSi

  FinPour

 Fin

Début

 Initialiser(Prem)

 mise_a_zero(Prem)

 afficher(Perm)

Fin.

 

Solution exo 11 :

Solution

Algorithme Personnel

Constantes

n = 50

Types

 Employé = Struct

 Matricule : Entier  Nom : Chaîne  Sal : Réel  Etat_Civil : Caractère FinStruct

Tab = Tableau[1..n] de Employé

Variables

TabEmp : Tab

i, nb : Entier

Procédure remplir(Var T : Tab)

Début

Pour i de 1 à nFaire

Ecrire(”Matricule de l’employé : ”)

Lire(T[i].Matricule)

 Ecrire(”Nom de l’employé : ”) Lire(T[i].Nom)

 Ecrire(”Salaire de l’employé : ”)

Lire(T[i].Sal)

 Ecrire(”Etat civil de l’employé : ”)

Lire(T[i].Etat_Civil)

FinPour

Fin

Fonction compter(T : Tab) : Entier

Début

Compter ¬0

Pour ide 1à nFaire

Si (T[i].Sal >= 500) ET (T[i].sal <= 700) Alors

Compter ¬Compter + 1

FinSi

FinPour

Fin

Début

Remplir(TabEmp)

nb ¬Compter(TabEmp)

Ecrire(nb, ” employés touchent entre 500 et 700 D”)

Fin

Solution exercice 12 :

Algorithme Personnel

Types

 Employé = Struct

 Matricule : Entier  Nom : Chaîne  Prénom : Chaîne  Grade : Caractère  Sal : Réel FinStruct

Fpers = Fichier de Employé

Variables

 Fp : Fpers

 emp : Employé

Procédure Création(Var f : Fpers)

Début

Ouvrir(f,E)

 Ecrire(”Matricule : ”) Lire(emp.Matricule)

TantQue(emp.Matricule # 0) Faire

 Ecrire(”Nom : ”)  Lire(emp.Nom)  Ecrire(”Prénom : ”) Lire(emp.Prénom)  Ecrire(”Grade : ”)  Lire(emp.Grade)

 Ecrire(”Salaire : ”)  Lire(emp.Sal)

Ecrire(f,emp)

Ecrire(”Matricule : ”)  Lire(emp.Matricule)

FinTQ

Fermer(f)

Fin

Procédure Consultation(f : Fpers)

Début

Ouvrir(f,L)

Lire(f,emp)

TantQueNON(FDF(f)) Faire

Si (emp.Sal>=500) ET (emp.Sal<=700) Alors

 Ecrire(emp.Matricule, emp.Nom, emp.Sal)

FinSi

Lire(f,emp)

FinTQ

Fermer(f)

Fin

Début

Création(Fp)

Consultation(Fp)

Fin.

Last modified: Wednesday, 9 March 2022, 12:45 AM