Vous êtes sur la page 1sur 8

Correction TD ALGORITHME 2024

zaayd 999
March 23, 2024

Exercice 24 :
Nous nous intéressons à une suite de nombres entiers terminée par la saisie d’un
zéro qui ne fait pas partie de la suite. Exemple : 1, 5, 2, 8, 9, 3, 4, 0.
Écrire un algorithme permettant de réaliser les tâches suivantes :
1. Détermination du plus grand élément de la suite,
2. Détermination du plus petit élément de la suite,
3. Calcul de la somme des éléments de la suite,

4. Calcul de la moyenne des éléments de la suite,


5. Calcul de la somme des éléments pairs de la suite,
6. Prévoir un affichage à l’écran de tous les résultats calculés.

Correction :
Algorithme: exercice 24
Variables:
nbr, max, min, sommeP airs: entier;
moyenne, somme: reel;
DEBUT
ecrire("Entrer un entier : ");
lire(n);
max <- n;
min <- n;
somme <- 0;
moyenne <- 0;
sommePairs <- 0;
tantque( n <> 0) faire
nbr <- nbr+1;
si(max < n) alors

1
max <- n;
finsi
si(min>n) alors
min <- n;
finsi
somme <- somme + n;
moyenne <- somme/nbr;
si(n%2 == 0) alors
sommePairs <- sommePairs + n;
finsi
ecrire("Entrer un entier : ");
lire(n);
fintantque
si (nbr > 0) alors
ecrire("Vous avez saisi le nombre ", nbr, " qui n’est pas nul.");
ecrire("La valeur maximale est :", max);
ecrire("La valeur minimale est :", min);
ecrire("La somme des nombres est :", somme);
ecrire("La moyenne des nombres est :", moyenne);
ecrire("La somme des nombres pairs est :", somePairs);
sinon
ecrire("Aucun nombre non nul n’a été saisi.");
finsi

FIN

Exercice 25 : Test C++ 2021-2022


Écrire un algorithme qui permet de lire 30 entiers et de vérifier s’ils sont consécutifs
(dans l’ordre croissant) ou non, sans déclarer 30 variables. On utilisera juste
quelques variables.
Exemples :
• 5 6 7 ... 33 34 35: Les 30 valeurs sont consécutives.

• 5 6 7 ... 11 12 16 17 18 ... 37 38 39: Les 30 valeurs ne sont pas consécutives.

Correction :
Algorithme : exercice 25
Variables:
n, i, p: entier;
consecutif : booleen;
DEBUT
ecrire("Entrer l’entier n : ");

2
lire(n);
p <- n;
i <- 1;
consecutif <- vrai;
tantque( i < 30 ) faire
ecrire("Entrer l’entier n : ");
lire(n);
si ( n <> p+1) alors
consecutif <- faux;
finsi
p <- n;
i <- i+1; // i++;
fintantque
si ( consecutif = faux) alors
ecrire("Les 30 entiers ne sont pas consecutifs dans l’ordre croissant.")
sinon
ecrire("Les 30 entiers sont consecutifs dans l’ordre croissant.")
finsi
FIN

Exercice 26 : Contrôle Mars 2023


Algorithme: GuessMe CompleteMe
Variables:
a, b, n, less, high: Entiers
Début
less <- 0;
high <- 0;
ecrire("Donner deux valeurs du borne a et b");
lire(a,b);
Repeter
ecrire("Donner un nombre entier");
lire(n);
si(n<a) alors
less++;
finsi
si(n>b) alors
high++;
finsi
jusqua( n >= a et n <= b )
Ecrire("Vous avez gagné, la valeur", n , "existe dans l’intervalle ", a , " et ", b );
Ecrire(", après", less+high , " tentatives \n");
Ecrire("Fin du programme");
Fin

3
Exercice 27 : Contrôle Mars 2023
On considère un nombre entier positif AB à deux chiffres A et B tels que A
diffère de B. Soit par exemple AB = 19 :
• En inversant les chiffres on obtient 91.
• On effectue la différence entre 91 et 19 pour obtenir le nombre 72 = 91−19.
On répète ce procédé avec 72, on obtient 45 = 72 − 27. Une dernière répétition
de cette méthode donne 9 = 54 − 45. La liste des nombres ainsi générée est
appelée liste vers 9 car elle s’arrête toujours avec le nombre 9.
Travail à faire : Écrire un algorithme qui lit un nombre entier N , et vérifie que
ce dernier est bien positif à deux chiffres distincts. Si c’est le cas, le programme
affichera la liste des nombres vers 9 à partir de N . Sinon le programme affichera
un message d’erreur.
Exemples :
• Pour N = 19, on affichera 19, 72, 45, 9.
• Pour N = 24, on affichera 24, 18, 63, 27, 45, 9.
• Pour N = 22 ou N = 5, on affichera Nombre invalide ! .

Correction :
Algorithme: exercice 27
Variables:
n, inverse, dif f, temp: entier
DEBUT
repeter
ecrire("Entrer un nombre entier positif à deux chiffres distincts : ");
lire(n);
jusqua( n <= 99 et n >= 10 et n%11 <> 0 );

tantque( n <> 9 ) faire


temp <- n;
inverse <- 0;
tantque( temp <> 0 ) faire
inverse <- inverse*10 + (temp%10);
temp <- temp/10;
fintantque
diff <- abs( inverse - n );
ecrire(n);
n <- diff;
fintantque
ecrire(9)
FIN

4
Exercice : 28
Donner l’algorithme qui demande la saisie au clavier un nombre entier N et qui
permet :
1. Afficher les chiffres qui composent le nombre N
2. Afficher le nombre des chiffres du nombre N
3. Afficher l’inverse du nombre N
4. Calculer la somme des chiffres du nombre N
5. Afficher le nombre d’occurrences d’un chiffre donné dans le nombre N

Correction : Q1
Algorithme: exercice 28 chiffres
Variables:
n, temp, i: entier
DEBUT
repeter
ecrire("Entrer un nombre entier strictement positif à deux chiffres distincts : ");
lire(n);
jusqua( n > 0 );
ecrire("Les chiffres de " , n , " sont : ");
tantque( n <> 0 ) faire
ecrire(n%10);
n <- n/10;
fintantque
FIN

Correction : Q2
Algorithme: exercice 28 nbr chiffres
Variables:
n, i, temp: entier
DEBUT
repeter
ecrire("Entrer un nombre entier strictement positif : ");
lire(n);
jusqua( n > 0 );
temp <- n;
i <- 0;
tantque( temp <> 0 ) faire

5
i++;
temp <- temp/10;
fintantque
ecrire("Le nombre des chiffres du nombre " , n , " est " , i);
FIN

Correction : Q3
Algorithme: exercice 28 inverse
Variables:
n, inverse, temp: entier
DEBUT
repeter
ecrire("Entrer un nombre entier strictement positif : ");
lire(n);
jusqua( n > 0 );
temp <- n;
inverse <- 0;
tantque( temp <> 0 ) faire
inverse <- inverse * 10 + (temp%10)
temp <- temp/10;
fintantque
ecrire("L’inverse de " , n , " est " , inverse);
FIN

Correction : Q4
Algorithme: exercice 28 sommes des chiffres
Variables:
n, temp, i, s: entier
DEBUT
repeter
ecrire("Entrer un nombre entier strictement positif à deux chiffres distincts : ");
lire(n);
jusqua( n > 0 );
s <- 0;
temp <- n;
tantque( temp <> 0 ) faire
s <- s + temp%10;
temp <- temp/10;
fintantque
ecrire("La somme des chiffres du nombre " , n , " est " , s);
FIN

6
Correction : Q5
Algorithme: exercice 28 nbr d occ
Variables:
n, nbr, i: entier
DEBUT
repeter
ecrire("Entrer un nombre entier strictement positif : ");
lire(n);
jusqua( n > 0 );
ecrire("Entrer le chiffre : ");
lire(nbr);
i <- 0;
temp <- n;
tantque( temp <> 0 ) faire
si(temp%10 = nbr) alors
i++;
finsi
temp <- temp/10;
fintantque
ecrire("Le nombre d’occurrences de " , nbr , " dans " , n , " est " , i);
FIN

Exercice 32 : Watermelon Problem


Un jour d’été torride, Pete et son ami Billy ont décidé d’acheter une pastèque.
Ils ont choisi la plus grosse et la plus mûre, selon eux. Après cela, la pastèque a
été pesée, et les balances ont montré w kilos. Ils se sont précipités à la maison,
mourant de soif, et ont décidé de diviser le fruit, mais ils ont rencontré un
problème difficile.
Pete et Billy sont de grands fans des nombres pairs, c’est pourquoi ils veu-
lent diviser la pastèque de manière à ce que chacune des deux parties pèse un
nombre pair de kilos, tout en n’étant pas obligatoirement égales. Les garçons
sont extrêmement fatigués et veulent commencer leur repas le plus rapidement
possible, c’est pourquoi vous devriez les aider et découvrir s’ils peuvent diviser
la pastèque comme ils le souhaitent. Bien sûr, chacun d’eux devrait obtenir une
partie de poids positif.

Entrée
La première (et unique) ligne d’entrée contient un nombre entier w (1 ≤ w ≤
100) — le poids de la pastèque achetée par les garçons.

7
Sortie
Imprimez OUI, si les garçons peuvent diviser la pastèque en deux parties, cha-
cune pesant un nombre pair de kilos ; et NON dans le cas contraire.

Correction :
Algorithme : Watermelon problem
Variables:
poids: entier
DEBUT

Repeter
ecrire("Veuillez entrer le poids de la pastèque: ");
lire(poids);
Jusqu’a ( poids >= 1 et poids <= 100 );

si ( poids%2 == 0 et poids <> 2) alors


ecrire("OUI");
sinon
ecrire("NON");
finsi

FIN

Vous aimerez peut-être aussi