1/7 Correction du TD3 Exercice1 Ecrire un algorithme qui lit un entier positif

1/7 Correction du TD3 Exercice1 Ecrire un algorithme qui lit un entier positif n puis affiche tous ses diviseurs. Corrigé : Algorithme Diviseurs ; Variables n, i : Entier ;// n la donnée à lire //et i un indice pour parcourir l’intervalle [1..n] à la recherche des diviseurs de n Début //lecture des données Ecrire("Entrer un entier positif=") ; Lire(n) ; // Traitement c-à-d parcourir l’intervalle [1..n] avec l’indice i Pour i  1 à n Faire Si ( n Mod i == 0 ) Alors /* Si le reste de la division de n par i est égal à 0 */ Ecrire (i, "Est un diviseur de", n) ; Finsi Fin Pour Fin Exercice 2 Ecrire un algorithme avec trois versions qui lit un entier positif n puis calcule et affiche son factoriel selon la formule n! = 1 x 2 x … x n. • Pour…Faire • Tant que … Faire • Répéter … TantQue… Corrigé : • Version Pour… Faire Algorithme Facto ; Variables n, i, f : Entier ; // n la donnée, i l’indice de boucle et f pour calculer le factoriel Début Ecrire ("Entrer un entier positif=") ; Lire(n) ; f  1 ; /* initialisation du factoriel à 1 puisque 1!=1 */ Pour i  2 à n Faire f  f * i ; /* Pour chaque parcours on multiplie l'ancienne valeur de f par i*/ Fin Pour Ecrire (n,"!=", f) ; Fin. 2/7 • VersionTantque…Faire Algorithme Facto ; Variables n, i, f : Entier ; Début Ecrire ("Entrer un entier positif=") ; Lire(n) ; f  1 ; /* initialisation du factoriel à 1 puisque 1!=1 */ i  2 ; /* initialisation du compteur i */ Tant que (i<= n) Faire f  f * i ;/* Pour chaque parcours on multiplie l'ancienne valeur de f par i*/ i  i + 1 ; /* incrémentation du compteur i */ Fin Pour Ecrire (n,"!=",f) ; Fin. • VersionRépéter…TantQue Algorithme Facto ; Variables n, i, f : Entier ; Début Ecrire("Entrer un entier positif="), Lire(n) ; f  1 ; /* initialisation de la factorielle à 1 puisque 1!=1 */ i  2 ;/* initialisation du compteur i */ Répéter f f * i ; /* Pour chaque parcours on multiplie l'ancienne valeur de f par i*/ i  i + 1 ;/* incrémentation du compteur i */ TantQue (i<=n) Ecrire(n,"!=",f) ; Fin. Exercice 3 Ecrire un algorithme permettant de : • Lire un nombre fini de notes comprises entre 0 et 20. • Afficher la meilleure note, la mauvaise note et la moyenne de toutes les notes. Corrigé : Algorithme Notes ; Variables n, i: Entier ; //n le nombre de notes et i indice de parcours de la boucle note, min, max, s : Réel ; //note entrée à chaque étape, min, max et s sont les notes //minimale, maximale et la somme des notes Début Ecrire("Entrer le nombre de notes=") ; Lire(n) ; /* On suppose que n est toujours supérieur à zéro */ s 0 ; min 20 ; max 0 ;// min ne peut pas être initialiser par 0 car il risque de garder //cette valeur comme étant la note minimale même si elle ne figure pas parmi les notes //entrées. Pour i  1 à n Faire Ecrire("Entrer une note=") ; Lire(note) ; s  s + note /* additionner la nouvelle note */ Si ( note < min ) Alors min  note ; /* mémorisation de la nouvelle valeur minimale jusqu’ici*/ Fin Si Si ( note > max ) Alors max note ; /* mémorisation de la nouvelle valeur maximale jusqu’ici */ Finsi Fin Pour Ecrire("Meilleur note = ", max) ; 3/7 Ecrire("Mauvaise note = ", min) ; Ecrire("Moyenne des notes = ", s/n) ; Fin Exercice 4 Calculer ab avec a réel et b entier par multiplication successives. Corrigé : Algorithme Puissance ; Variables a, c : Réel ; // va contenir le résultat de la puissance b, i: Entier ; Début Ecrire("Entrer la valeur de a=") ; Lire(a) ; Ecrire("Entrer la valeur de b=") ; Lire(b) ; c  1 ; /* initialisation du résultat du produit */ Pour i  1 à Abs(b) faire // abs() fonction qui retourne la valeur absolue c  c * a ; /*produit de axa… b fois */ Fin Pour Si ( b < 0 ) Alors /* si b est négative alors le résultat sera 1/c */ c 1 / c; Fin Si Ecrire(a," à la puissance ", b, "=", c) ; Fin Exercice 5 Ecrire un algorithme qui lit un entier positif et vérifie si ce nombre est premier ou non. Remarque : un nombre premier n'est divisible que par 1 et par lui-même. Corrigé : Exemple : soit n==19 ? Diviseurs de n==19 (à part 1 et 19) : 2, 3, 4, 5, 6, 7, 8, 9 : on vérifie si ses nombres sont des diviseurs de 19 C-à-d : soit i allant de 2 à (n div 2) : à chaque étape tester si i est diviseur de n (c-à-d : si ( n mod i==0) alors i est diviseur 19. Pour savoir si on a trouvé au moins un diviseur, on doit ajouter une variable nb_div qui permet de compter combien de diviseurs, on a trouvé pour n. Pour voir si n est premier ou non il suffit de comparer nb_div à 0 Algorithme Premier ; Variables n, i, nb_div: Entier ; Début Ecrire("Entrer un entier possitif=") ; Lire(n) ; nb_div  0 ; /* initialisation du nombre de diviseurs*/ i 2 ; Tant que (i <= ndiv2) Faire Si ( n Mod i == 0 ) Alors nb_div nb_div + 1 ; /* incrémentation du nombre de diviseurs */ FinSi i  i +1 ; Fin Tant que 4/7 nb  0 ; Pour i 2 à n div 2 faire Si ( n Mod i == 0 ) Alors nb 1 ; /* incrémentation du nombre de diviseurs */ FinSi fPour Si (nb == 0) Alors Ecrire("C'est un nombre premier") ; Sinon Ecrire("Ce n'est pas un nombre premier") ; FinSi Fin Exercice6 Ecrire un algorithme qui lit deux entiers positifs A et B puis calcule et affiche leur PGCD en utilisant la méthode suivante: • Si A = B; PGCD(A, B) = A • Si A>B; PGCD(A, B) = PGCD(A-B, B) • Si A<B; PGCD(A, B) = PGCD(A, B-A) Exemple : PGCD(18, 45) = PGCD(18, 27) = (PGCD(18, 9) = PGCD(9, 9) = 9 Corrigé : On a une boucle de type soit Tantque soit Repeter. Test d’arrêt : lorsque a==b A chaque étape soit on modifie la valeur de A ou bien celle de B. Algorithme PGCD ; Variables a, b: Entier ; Début Ecrire("Entrer la valeur de a =") ; Lire(a) ; Ecrire("Entrer la valeur de b =") ;Lire(b) ; Répéter Si ( a > b ) Alors a a - b ; FinSi Si ( a < b ) Alors b b - a ; FinSi Tantque ( a !=b ) Ecrire("Le PGCD =", a) ; Fin Exercice7 Ecrire un algorithme qui calcule le PPCM (Plus Petit Commun Multiple) de deux entiers positifs A et B en utilisant la méthode suivante : • Permuter, si nécessaire, les données de façon à ranger dans A le plus grand des deux entiers A et B; • Chercher le plus petit multiple de A qui est aussi multiple de B. Exemple : PPCM(6, 8) = PPCM(8, 6) = est ce que 8 est un multiple de 6 sinon On teste si 16, qui est 8+8, est multiple de 6 si oui on s’arrête sinon on continue Ensuite 24, qui est 16+8, et puisque 24 est multiple de 6 on s’arrête 24. Corrigé : 1- Lecture de a et b les données 5/7 2- Si (a<b) alors permuter a et b ( ca ; ab ;bc ;) 3- Soit ppcma ; Boucle par exemple tant que ppcm n’est pas multiple de a faire ppcmppcm+a ; ppcma ; tant que (ppcm mod b !=0)faire ppcmppcm+a ; fTque Algorithme PPCM ; Variables a, b, pp, c: Entier; Début Ecrire("Entrer la valeur de a =") ; Lire(a) ; Ecrire("Entrer la valeur de b =") ; Lire(b) ; Si ( a < b ) Alors c  a ; /*-------------------*/ a  b ; /* Permutation */ b  c ; /*------------------*/ Finsi pp  a ; Tant que (((pp) Mod b) !=0) Faire pp  pp +a ; Fin Tant que Ecrire ("PPCM =", pp) ; Fin Exercice 8 Ecrire un algorithme qui calcule et affiche les 100 premiers termes de la suite de Fibonacci. La suite de Fibonacci est définie par : • F0 = 1 • F1 = 1 • Fn = Fn -2 + Fn -1 pour n > 1. Corrigé : On choisit 3 variables qui représentent les termes Fn, Fn-1 et Fn-2 : Fn est représentée par une variable notée Fc (courant) Fn-1 est représentée par uploads/Litterature/ corrige-td3 4 .pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager