M1102-TP1 Exercice11

LA fonction rand () est-elle aléatoire?

Le but de cet exercice est de monter que la fonction rand () du c++ n’est pas si aléatoire que cela.

Pour cela, écrivez le corps de la procédure exo11() qui :
* stoke dans une variable le premier appel à la fonction rand ();
* rentre dans une boucle infinie;
* on sort de la boucle infinie si la valeur générée par rand () est celle de départ;
* on affiche le nombre de fois où on est passé de la boucle.

Faites différents tests :
* en lançant plusieurs fois votre programme;
* en initialisant la graine du générateur aléatoire de manière presque-aléatoire (utilisation de srand ());
* en comparant vos résultats avec ceux de vos voisins.
Que constatez vous?

R1.01 – Prog#1 Exercice11

Ecrire un algorithme qui :
• affiche l’invite : "saisir une string";
• lit une chaine de caractères au clavier ;
• l’affiche à l’écran.
PS: les deux derniers items de ce petit programme correspondent à la commande “echo” de bash.

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.