M1102-TD4 Exercice3

Le but de cet exercice est d’afficher le nombre d’occurrences d’un caractère dans une chaîne de caractères. Pour cela :

  • écrire la fonction ComptCaract() qui compte le nombre d’occurrences d’un caractère passé en paramètre, dans une chaîne de caractères passées également en paramètre ; pour cela, utiliser la fonction TrouveCarDansStr ();
  • utiliser l’algorithme précédent qui teste cette fonction.

M1102-TD4 Exercie3 Corrigé

[Algo]
fonction TrouveCarDansStr (Caract : in caractere,
Chaine : in string,
Debut : in entier_naturel) renvoie entier_naturel
debut
declarer i : entier_naturel;
i <- Debut;
tant_que (i < taille(Chaine) ET_ALORS Caract ne_vaut_pas Chaine [i])
faire
i <- i +1;
ffaire
renvoie i;
fin

fonction ComptCarac (Caract : in caractere,
Chaine : in string) renvoie entier_naturel
debut
declarer Cpt : entier_naturel;
Cpt <- 0;

declarer Pos : entier_naturel;
Pos <- 0;

boucle
Pos <- TrouveCarDansStr (Caract, Chaine, Pos);
si (Pos vaut taille (Chaine)) sortie;
Cpt <- Cpt + 1;
Pos <- Pos + 1;
fboucle

renvoie Cpt;
fin

algorithme TestComptCarac
debut
declarer Str : string;
Str <- “Salut ca va?”;

afficher (“debut”);
afficher (“on trouve “, ComptCarac (‘a’, Str), ” fois la lettre ‘a’ dans “, Str);
ligne_suivante;
afficher (“on trouve “, ComptCarac (‘b’, Str), ” fois la lettre ‘b’ dans “, Str);
ligne_suivante;
fin
[/Algo]

M1102-TD4 Exercice4

Le but de cet exercice est d’afficher le nombre d’occurrences de chaque élément d’un petit ensemble de valeurs dans une collection. Ici, on comptera le nombre de voyelles contenues dans une chaîne de caractères. Pour cela :

  • initialiser les compteurs;
  • pour chaque valeur de l’ensemble (chaque voyelle), balayer complètement la collection (la chaîne de caractères) et compter le nombre d’occurrences de cette valeur (le nombre de voyelles);
  • calculer le nombre total d’occurrence des éléments de l’ensemble (le nombre total de voyelles);
  • afficher le nombre d’occurrences de chacun des éléments de l’ensemble (de chacune des voyelles) ainsi que leur fréquence relative (au nombre total d’éléments de l’ensemble (de voyelles));

Remarques :

  • on pourra utiliser les fonctions ComptCaract()et/ou TrouveCarDansStr ();
  • on rangera l’ensemble des voyelles dans une chaîne de caractères constante.

M1102-TD4 Exercie4 Corrigé

[Algo]
fonction TrouveCarDansStr (Caract : in caractere,
Chaine : in string,
Debut : in entier_naturel) renvoie entier_naturel
debut
declarer i : entier_naturel;
i <- Debut;
tant_que (i < taille(Chaine) ET_ALORS Caract ne_vaut_pas Chaine [i])
faire
i <- i +1;
ffaire
renvoie i;
fin

fonction ComptCarac (Caract : in caractere,
Chaine : in string) renvoie entier_naturel
debut
declarer Cpt : entier_naturel;
Cpt <- 0;

declarer Pos : entier_naturel;
Pos <- 0;

boucle
Pos <- TrouveCarDansStr (Caract, Chaine, Pos);
si (Pos vaut taille (Chaine)) sortie;
Cpt <- Cpt + 1;
Pos <- Pos + 1;
fboucle

renvoie Cpt;
fin

algorithme ComptagePetitEnsemble
debut
declarer KStrVoy : constante string <- “aeiouy”;

declarer TabCpt : tableau_de taille (KStrVoy) entier_naturel;

declarer Chaine : string;
afficher (“Veuillez saisir une chaine de caractères : “);
saisir (Chaine);

//comptage
pour (i variant_de 0 a taille (KStrVoy) -1)
faire
TabCpt [i] <- ComptCarac (KStrVoy [i], Chaine);
ffaire

//nb total d’occurence
declarer Somme : entier_naturel;
Somme <- 0;
pour (i variant_de 0 a taille (TabCpt) – 1)
faire
Somme <- Somme + TabCpt [i];
ffaire

//affichage final
pour (i variant_de 0 a taille (KStrVoy) -1)
faire
afficher (“Le caractère “, KStrVoy [i], ” apparait “, TabCpt [i], ” fois en absolu et “, TabCpt [i]*100 / Somme, “% en relatif”);
ligne_suivante;
ffaire
fin
[/Algo]

Amphi2 C++

GDE Erreur: Erreur lors de la récupération du fichier - si nécessaire, arrêtez la vérification d'erreurs (404:Not Found)

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?

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]