Correction du TD n°4

Exercice 1

Ecrire un algorithme qui calcule le produit scalaire de deux vecteurs (représentés comme des tableaux).

001  { Calcul du produit scalaire de 2 vecteurs  }
002  { materialises par des tableaux de reels    }
003  
004  fonction nombreOccurences(t1,t2) : reel
005    Donnees t1 : tableau [N] de reel     { premier tableau de reels              }
006            t2 : tableau [N] de reel     { second tableau de reels               }
007    Locales i : entier                   { variable indice de boucle pour        }
008            ps : reel                    { variable cumul resultat               }
009    ps := 0.0
010    pour i de 0 à N-1 faire
011      ps := ps + t1[i]*t2(i]
012    fait
013    Resultat : ps
014  fin action

ProduitScalaire.lda

Exercice 2

Soient deux tableaux d'entiers. Ecrire un algorithme qui permet de tester l'égalité entre les deux tableaux : il rend VRAI si les composants des deux tableaux correspondent position par position, et FAUX sinon.

001  { Test de l'egalite de deux tableaux        }
002  { d'entiers position pour position          }
003  
004  fonction testEgaliteTableaux(t1,t2) : booleen
005    Donnees t1 : tableau [N] de entier   { premier tableau d'entiers             }
006            t2 : tableau [N] de entier   { second tableau d'entiers              }
007    Locales i : entier                   { variable indice de boucle tant que    }
008            res : booleen                { variable booleenne resultat           }
009    res := vrai
010    i := 0
011    tant que res et (i < N) faire
012      si t1[i] <> t2[i] alors
013        res := faux
014        sinon
015        i := i+1
016      fsi
017    fait
018    Resultat : res
019  fin fonction

TestEgaliteTableaux.lda

TestEgaliteTableaux.java

Exercice 3

Ecrire un algorithme qui recherche le nombre d'occurrences d'un entier dans un tableau d'entiers.

001  { Calcul du nombre d'occurences d'un entier }
002  { dans un tableau d'entiers                 }
003  
004  fonction nombreOccurences(t,v) : entier
005    Donnees t : tableau [N] de entier    { tableau d'entiers ou rechercher       }
006            v : entier                   { entier recherche                      }
007    Locales i : entier                   { variable indice de boucle pour        }
008            cpt : entier                 { variable compteur resultat            }
009    cpt := 0
010    pour i de 0 à N-1 faire
011      si t[i] = v alors
012        cpt := cpt+1
013      fsi
014    fait
015    Resultat : cpt
016  fin fonction

NombreOccurrences.lda

NombreOccurrences.java

Exercice 4

Ecrire un algorithme qui inverse l'ordre d'apparition des nombres présents dans un tableau d'entiers.

001  { Inversion d'un tableau d'entiers          }
002  
003  action inversionTableau(t)
004    Donnees / Resultat  t : tableau [N] de entier { tableau d'entiers inverse    }
005    Locales  i : entier                           { variable indice de boucle    }
006             aux : entier                         { variable auxiliaire          }
007    pour i de 0 à N/2-1 faire
008      aux := t[i]
009      t[i] := t[N-1-i]
010      t[N-1-i] := aux
011    fait
012  fin action

InversionTableau.lda

Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr