M1102-TD3 Exercice3 Corrigé

[Algo]
fonction find (Val : in entier, TabInt : in tableau_de entier) renvoie entier_naturel
debut
declarer Pos : entier_naturel;
Pos <- 0;
tant_que (Pos < taille (TabInt) ET_ALORS TabInt[Pos] ne_vaut_pas Val)
faire
Pos <- Pos + 1;
ffaire
renvoie Pos;
fin

procedure GenereTabInt (TabInt : in_out tableau_de entier, Min : in entier, Max : in entier)
debut

declarer Val : entier;
pour (i variant_de 0 a taille (TabInt) – 1)
faire
Val <- Rand (Min, Max);
TabInt [i] <- Val;
ffaire
fin

procedure AfficheTabInt (TabInt : in tableau_de entier, Sep : in caractere, NbParLigne : in entier_naturel)
debut

//cpt designe le nombre d’affichage déjà effectué
declarer cpt :entier_naturel;
cpt <- 0;

pour (i variant_de 0 a taille(TabInt) – 1)
faire

afficher (TabInt [i]);
cpt <- cpt + 1;
si (modulo (cpt, NbParLigne) vaut 0)
ligne_suivante;
sinon
afficher (Sep);
fsi
ffaire
fin

algorithme TestDeFind
debut
declarer N : entier_naturel;
afficher ("entrer la taille du tableau : ");
saisir (N);

declarer TabInts : tableau_de N entier;

GenereTabInt (TabInts, -100, 100);

AfficheTabInt (TabInts, ‘\t’, 10);
ligne_suivante;

declarer ValCherchee : entier;
afficher ("entrer la valeur à trouver : ");
saisir (ValCherchee);

declarer Pos : entier_naturel;
Pos <- find (ValCherchee, TabInts);
si (Pos < taille (TabInts))
afficher (ValCherchee, " apparait pour la première fois à la position ", Pos, " dans le tableau");
sinon
afficher (ValCherchee, " n’apparait pas dans le tableau");
fsi
ligne_suivante;
fin[/Algo]