Archives de Catégorie: M1102-TD3
M1102-TD3 Exercice1
Ecrire la fonction SaisirEntierSupX ()
qui renvoie un entier naturel saisi au clavier, supérieur à une valeur entière X
passée en troisième paramètre – les deux premiers paramètres sont les chaînes de caractères représentant l’invite de la saisie et le message d’erreur si la valeur saisie n’est pas supérieure à X
.
M1102-TD3 Exercice1 Corrigé
[Algo]
fonction SaisirEntierSupX (Invite : in string, MsgErr : in string, X : in entier_naturel) renvoie entier_naturel
debut
declarer N : entier_naturel;
boucle
afficher (Invite);
saisir(N);
si (N > X) sortie;
afficher (MsgErr);
ligne_suivante;
fboucle
renvoie N;
fin
algorithme TestSaisirEntierSupX
debut
declarer N : entier_naturel;
N <- SaisirEntierSupX ("Entrer une valeur supérieure à 10 : ", "Plus grande que 10 svp!", 10);
afficher ("Vous avez saisi : ", N);
ligne_suivante;
fin
[/Algo]
M1102-TD3 Exercice2
Ecrire la fonction find ()
de profil :
[Algo]fonction find (Val : in entier , TabInt : in tableau_de entier) renvoie entier_naturel;[/Algo]
Cette fonction renvoie l’indice de la première occurrence de Val
dans TabInt
. Pour cet exercice, on suppose que Val
est présent dans TabInt
.
En utilisant les sous-programmes que vous avez déjà vus, écrire un algorithme permettant de tester la fonction find ()
. Faire la trace de votre algorithme.
M1102-TD3 Exercice2 Corrigé
[Algo]
fonction find (TabInt : in tableau_de entier, Val : in entier) renvoie entier_naturel
debut
declarer Pos : entier_naturel;
Pos <- 0;
tant_que (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 (TabInts, ValCherchee);
afficher (ValCherchee, " apparait pour la première fois à la position ", Pos, " dans le tableau");
ligne_suivante;
fin[/Algo]
M1102-TD3 Exercice3
Ecrire la fonction find ()
de profil identique à celui de l’exercice 2. Pour cet exercice, on ne sait pas si Val
est présente dans TabInt
. Si Val
est présente, on renvoie l’indice de la première occurrence. Dans le cas contraire, on renvoie la taille de TabInt
.
En utilisant les sous-programmes que vous avez déjà vus, écrire un algorithme permettant de tester la fonction find ()
. Faire la trace de votre algorithme.
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]
M1102-TD3 Exercice4
Reprendre l’exercice 3 en utilisant la technique des sentinelles.
M1102-TD3 Exercice4 Corrigé
[Algo]
fonction find (Val : in entier, TabInt : in tableau_de entier) renvoie entier_naturel
debut
allonger (TabInt, 1);
TabInt [taille (TabInt) – 1] <- Val;
declarer Pos : entier_naturel;
Pos <- 0;
tant_que (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]
M1102-TD3 Exercice5
On souhaite écrire le sous-programme GenereTabInt ()
. Celui-ci doit générer un tableau de N
entiers aléatoires distincts dans [1..M
] (M > N
). Dans cet exercice, à chaque itération, on va remplir un élément du tableau. L’algorithme de haut niveau est le suivant :
[Algo]
…
pour (Nb variant_de 0 a N – 1)
faire
GenererEntierAleatoireJusquACeQuIlNeSoitPasDejaStocke;
StockerLEntierAleatoireDansTabInt;
ffaire
…
[/Algo]
Ecrire l’algorithme qui teste GenereTabInt ()
.