100 Exercices Corrigés En Algorithme avec les Organigrammes – Partie 2

La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec les algorithmes et programmation. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur les algorithmes et programmation. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!

Vous pouvez lire notre tutoriel sur les algorithmes avant de résoudre les exercices suivants.

 
 

Veuillez voir les exercices de 1 à 30 sur ce lien.

 

31. Ecrivez un algorithme pour inverser les chiffres d’un nombre saisi par l’utilisateur.

Exemple de sortie:

Donner un nombre: 123
321
Algorithme InverserUnNombre
Variables Nbr,rev: entiers  
Début 
  rev ← 0   
  Ecrire("Donner un nombre:")
  Lire(Nbr)

  TantQue(Nbr > 0) faire
     rev ← rev * 10  
     rev ← rev + (Nbr mod 10)
     Nbr ← Nbr div 10
  FinTantQue
  Ecrire(rev)      
Fin

Voici ce que fait l’algorithme ci-dessus:

  • Initialise la variable rev ← 0.
  • Dans la boucle TantQue multiplie le nombre inversé ‘rev’ par 10, ajoutez le reste du nombre original ‘Nbr’ divisé par 10 à ‘rev’.
    • C’est-à-dire, rev ← rev + (Nbr mod 10)
  • Diviser le nombre original par 10.
    • Dans cette étape, la valeur du nombre original ‘Nbr’ est mise à jour en la divisant par 10. À chaque itération, le dernier chiffre du nombre original ‘Nbr’ est supprimé et la boucle se termine lorsque la valeur du nombre original ‘Nbr’ est égale à 0.

Maintenant, inversons le nombre 123 en utilisant l’algorithme ci-dessus.

Nbr = 123
rev = 0
rev = rev * 10 + Nbr mod 10 = 0 * 10 + 123 mod 10 = 3
Nbr = Nbr/ 10 = 12
rev = rev * 10 + Nbr mod 10 = 3 * 10 + 12 mod 10 = 32
Nbr = Nbr/ 10 = 1
rev = rev * 10 + Nbr mod 10 = 32 * 10 + 1 mod 10 = 321
Nbr = Nbr/10 = 0.

Le résultat sera donc 321.

 
 

32. Écrire un algorithme permettant d’entrer un nombre et d’afficher le triangle d’étoiles.

Exemple de sortie:

Entrez un nombre: 5
    *
   ***
  *****
 *******
*********
Algorithme TrianglEtoiles
Variables Nbr,i,j: entiers  
Début    
Ecrire("Entrez un nombre:")
Lire(Nbr)  // Lit le nombre de lignes du triangle
Ecrire("\n")

// Parcourt chaque ligne du triangle
Pour i de 0 à Nbr-1 faire
  // Parcourt chaque colonne de la ligne
  Pour j de 1 à (Nbr*2)-1  faire 
      // Vérifie si la position actuelle doit contenir une étoile
      Si (j >= Nbr-i et j <= Nbr+i ) alors                    
          Ecrire("*")   // Affiche une étoile
      SiNon   
          Ecrire(" ")  // Affiche un espace pour centrer le triangle 
      FinSi		
  FinPour
  Ecrire("\n")    // Passe à la ligne suivante    
FinPour
Fin
  • Lire(Nbr) : récupère la hauteur du triangle.
  • Pour i de 0 à Nbr-1 : une itération correspond à une ligne du triangle.
  • Pour j de 1 à (Nbr*2)-1 : parcourt toutes les positions de la ligne, des espaces jusqu'aux étoiles.
  • Si (j >= Nbr-i et j <= Nbr+i) : détermine les colonnes où les étoiles doivent être affichées.
  • Ecrire("*") : affiche une étoile.
  • Ecrire(" ") : affiche un espace afin de conserver la forme pyramidale.
  • Ecrire("\n") : passe à la ligne suivante une fois la ligne courante terminée.
 
 

33. Écrire un algorithme qui permet de savoir si le nombre saisi est Premier ou non. (Un nombre premier est un nombre uniquement divisible par 1 ou par lui-même).

Exemple de sortie:

Entrer un nombre : 29
29 est un nombre premier

Entrer un nombre : 21
21 n'est pas un nombre premier

21 a quatre diviseurs (1, 3, 7 et 21) donc ce n'est pas un nombre premier.

Algorithme NbrPremier
Variables Nbr,i:entiers

Début  
   Ecrire("Entrer un nombre:")
   Lire(Nbr)   // Lit le nombre à tester
   i ← 2   // Commence les tests de divisibilité à partir de 2
   TantQue(Nbr mod i ≠ 0 et i < Nbr) faire
     // Passe au diviseur suivant tant qu'aucun diviseur n'est trouvé
     i ← i + 1
   FinTantQue
  
   // Si aucun diviseur n'a été trouvé avant d'atteindre Nbr,
   // alors le nombre est premier
   Si (i = Nbr) alors 
      Ecrire(Nbr," est un nombre premier")
   SiNon    
      Ecrire(Nbr," n'est pas un nombre premier")
   FinSi 
Fin

Une façon simple de déterminer si un nombre est premier est de faire une boucle allant de 2 à n-1 et de vérifier si le nombre est divisible par n'importe quel nombre de cette plage. Si c'est le cas, il ne s'agit pas d'un nombre premier ; sinon, c'est le cas.

  • Lire(Nbr): saisit le nombre à vérifier.
  • i ← 2: initialise le premier diviseur possible.
  • TantQue (Nbr mod i ≠ 0 et i < Nbr): continue les tests tant qu'aucun diviseur n'est trouvé et que i est inférieur à Nbr.
  • i ← i + 1: essaie le diviseur suivant.
  • Si (i = Nbr): si aucun diviseur n'a été trouvé avant d'atteindre Nbr, alors le nombre est premier.
  • Sinon: un diviseur a été trouvé, donc le nombre n'est pas premier.
 
 

34. Ecrivez un algorithme qui permet de saisir 5 nombres dans un tableau. Comptez ensuite le nombre d'éléments pairs et impairs.

Exemple de sortie:

Entrer un nombre: 1
Entrer un nombre: 3
Entrer un nombre: 2
Entrer un nombre: 6
Entrer un nombre: 9

Total des éléments pairs: 2 
Total des éléments impaires: 3
Algorithme NbrPaireImpaire
Variables  myTab[10],i,pair,impair :entiers  
Début 
	  // Initialise les compteurs des nombres pairs et impairs
	  pair ← 0  
	  impair ← 0
	  
    Pour i de 1 à 5 faire
      Ecrire("Entrer un nombre:")
      Lire(myTab[i])  // Saisit et stocke les 5 nombres dans le tableau    
    FinPour   

    Pour i de 1 à 5 faire    // Parcourt les éléments du tableau
       Si(myTab[i] mod 2 = 0) alors  
          pair ← pair + 1    // Incrémente le compteur des nombres pairs
       SiNon    
          impair ← impair + 1 // Incrémente le compteur des nbr impairs
       FinSi	
    FinPour
  
    // Affiche le nombre d'éléments pairs et impairs
    Ecrire("Total des éléments pairs:",pair)
    Ecrire("Total des éléments impaires:",impair)
Fin

L'algorithme ci-dessus invite l'utilisateur à saisir 5 nombres dans un tableau nommé myTab, puis affiche le total des éléments pairs et impaires.

Déclarez et initialisez deux variables avec zéro pour stocker les nombres pairs et impairs.
pair ← 0 et impair ← 0.

La première boucle POUR demande à l'utilisateur de saisir 5 éléments dans le tableau, et la boucle POUR s'exécute de 1 jusqu'à 5, invitant l'utilisateur à saisir chaque élément à l'aide de lire(), et stockant chaque entrée dans l'index correspondant du tableau myTab[i].

La deuxième boucle POUR parcourt le tableau myTab de 0 à 5. A l'intérieur de la boucle, incrémenter le nombre pair de 1 si l'élément courant du tableau est pair. Sinon, on incrémente le nombre impair.

Enfin, nous affichons le résultat à l'aide de Ecrire().

 
 

35. Ecrivez un algorithme qui demande d'entrer un tableau Tab de 10 nombres, et de placer les éléments pairs dans un tableau Tab1 et les éléments impairs dans un tableau Tab2. Affichez ensuite Tab1 et Tab2.

Exemple de sortie:

Tab : 1 5 2 4 9 3 3 6 8 7   
Tab1: 2 4 6 8     
Tab2: 1 5 9 3 3 7
Algorithme TabPairImpaire
Variables i,j,k:entiers
          Tab[10],Tab1[10],Tab2[10]:tableaux d'entiers 
Début 
  // Initialisent les indices de Tab1 (pairs) et Tab2 (impairs)
  j ← 1  
  k ← 1
  Ecrire("Tab:")
  Pour i de 1 à 10 faire   
     Lire(Tab[i])   // Saisit les 10 éléments du tableau Tab
  FinPour  
    
  Pour i de 1 à 10 faire   // Parcourt tous les éléments de Tab
    Si(Tab[i] mod 2 = 0) alors  
        Tab1[j] ← Tab[i]    // Copie le nombre pair dans Tab1 
        j ← j + 1           // Passe à la case suivante de Tab1
    SiNon   
        Tab2[k] ← Tab[i]    // Copie le nombre impair dans Tab2
        k ← k + 1           // Passe à la case suivante de Tab2
    FinSi
  FinPour

  Ecrire("Tab1:")
  Pour i de 1 à j faire  // Affiche que les éléments stockés dans Tab1
      Ecrire(Tab1[i])
  FinPour  
  Ecrire("Tab2:")
  Pour i de 1 à k faire  // Affiche que les éléments stockés dans Tab2  
      Ecrire(Tab2[i]) 
  FinPour
Fin

La première instruction Ecrire demande à l'utilisateur d'entrer N nombre d'éléments dans le tableau Tab à l'aide d'une boucle POUR, et stocke chaque entrée dans l'index correspondant du tableau Tab[i].

La boucle POUR suivante itère ensuite sur chaque élément de Tab et sépare les éléments pairs et impairs dans deux tableaux différents Tab1 et Tab2, respectivement, à l'aide d'instructions Si-SiNon. Les variables j et k sont utilisées pour suivre les indices des éléments pairs et impairs dans les deux tableaux.

Enfin, les deux dernières instructions Ecrire (Ligne 24 et 28) affichent les éléments pairs et impairs trouvés, respectivement, en utilisant une boucle POUR pour itérer sur chaque élément des deux tableaux.

 
 

36. Écrire un algorithme qui lit un caractère et détermine si c'est une lettre ou non, dans le cas d'une lettre, il indique si c'est une minuscule ou une majuscule.

Exemple de sortie:

Donnez une lettre: a
C'est une lettre Minuscule

Donnez une lettre: A
C'est une lettre Majuscule

Donnez une lettre: 5
C'est pas une lettre!
Algorithme MinusculeMajuscule
Variables l: caractère
Début
  Ecrire("Donnez une lettre:")
  Lire(l)  // Lit le caractère saisi
  // Vérifie si le code ASCII correspond à une lettre majuscule
  Si(l >= 65 et l <=90 ) alors
    Ecrire("C'est une lettre Majuscule")
  SiNon 
    // Vérifie si le code ASCII correspond à une lettre minuscule
    Si(l >= 97 et l <= 122) alors
        Ecrire("C'est une lettre Minuscule")
    SiNon 
        // Le caractère n'est ni une majuscule ni une minuscule
        Ecrire("C'est pas une lettre!")
    FinSi
  FinSi
Fin

Pour résoudre ce problème, il faut connaître la valeur ASCII d'un caractère. C'est la façon la plus simple de déterminer si un caractère est alphabétique ou non. Ce problème est résolu à l'aide des détails suivants:

  • Les lettres majuscules (A-Z) se situent dans la plage 65-91 de la valeur ASCII.
  • Les lettres minuscules (a-z) se situent dans la plage 97-122 de la valeur ASCII.
  • Toute valeur ASCII différente est un caractère non alphabétique.
 
 

37. Écrire un algorithme qui compte le nombre d'éléments dupliqués dans un tableau de nombres entiers saisi par l'utilisateur.

Exemple de sortie:

Entrer un nombre: 5   
Entrer un nombre: 1  
Entrer un nombre: 5  
Entrer un nombre: 6   
Entrer un nombre: 3  
Entrer un nombre: 5   
Entrer un nombre: 4   
Entrer un nombre: 7   
Entrer un nombre: 9   
Entrer un nombre: 5
Nombre total d'éléments dupliqués est: 4
Algorithme ElémentsDupliqués
Variables myTab[10],compteur,i,j: entiers
Début

 Pour i de 1 à 10 faire
   Ecrire("Enter un entier:")
   Lire(myTab[i])      // Saisit les 10 éléments du tableau            
 FinPour

 compteur ← 0     // Initialise le compteur des doublons
 
 // Parcourt chaque élément du tableau
 Pour i de 1 à 10 faire         
   // Compare l'élément courant avec les éléments suivants
   Pour j de i+1 à 10 faire  
      Si(myTab[i] = myTab[j]) alors  
           // Incrémente le compteur lorsqu'un doublon est trouvé                  
           compteur ← compteur + 1 
      FinSi		   
   FinPour
 FinPour
 // Affiche le nombre de doublons trouvés
 Ecrire("Nombre total d'éléments dupliqués est:",compteur)
Fin

L'algorithme ci-dessus invite l'utilisateur à saisir 10 nombres dans un tableau nommé myTab.

La première boucle POUR demande à l'utilisateur de saisir 10 éléments dans le tableau, et la boucle POUR s'exécute de 1 jusqu'à 10, invitant l'utilisateur à saisir chaque élément à l'aide de lire(), et stockant chaque entrée dans l'index correspondant du tableau myTab[i].

Initialiser la variable "compteur" avec 0 pour stocker le nombre de doublons.

Pour compter le nombre total d'éléments dupliqués dans un tableau donné, nous avons besoin de deux boucles. Exécutez une boucle extérieure de 0 à la taille(10). La structure de la boucle doit ressembler à Pour i de 1 à 10 faire. Cette boucle est utilisée pour sélectionner chaque élément du tableau et vérifier les éléments suivants pour les éléments en double en utilisant une autre boucle imbriquée.

Exécutez une autre boucle interne pour trouver le premier doublon de l'élément actuel du tableau. Exécutez une boucle interne de i + 1 à la taille(10), la structure de la boucle devrait ressembler à Pour j de i+1 à 10 faire. Pourquoi exécuter la boucle à partir de i + 1 ? Parce que nous devons rechercher les éléments en double dans les éléments suivants, à partir de l'élément actuel.

La boucle interne vérifie la présence d'un élément en double. Si c'est le cas, le compteur est incrémenté. C'est-à-dire Si(myTab[i] = myTab[j]) alors, compteur ← compteur + 1.

 
 

38. Écrire un algorithme qui prend deux entiers de l'utilisateur (un nombre de base et un exposant) et calcule la puissance.

Exemple: Dans le cas de 23

  • 2 est le nombre de base
  • 3 est l'exposant
  • Et la puissance est égale à 2*2*2

Exemple de sortie:

Entrer la base: 2
Entrer l'exposant: 3
2 ^ 3 = 8
Algorithme PuissanceNbr
Variables i,e: entiers  
          puissance,b :réel
Début    
 puissance ← 1   // Initialise le résultat à 1
 Ecrire("Entrer la base:")   
 Lire(b)   // Lit la base
 Ecrire("Entrer l'exposant:")   
 Lire(e)   // Lit l'exposant

 Pour i de 1 à e faire  // Multiplie la base par elle-même e fois
   puissance ← puissance * b 
 FinPour
 
 Ecrire(b," ^ ",e," = ",puissance)  // Affiche le résultat du puissance
Fin

Voici la logique descriptive étape par étape:

  • L'utilisateur entre la base et les exposants. Les stocker dans deux variables, b et e.
  • Déclarer et initialiser une autre variable pour stocker la puissance, puissance ← 1.
  • Exécutez une boucle de 1 à exposant, en incrémentant le compteur de la boucle de 1 à chaque itération. La structure de la boucle doit ressembler à Pour i de 1 à e faire.
  • Pour chaque itération à l'intérieur de la boucle, multipliez la puissance par la base, c'est-à-dire puissance ← puissance * b.
  • Enfin, à la fin de la boucle, il ne reste plus que la puissance dans la variable puissance.
 
 

39. Écrire un algorithme qui permet d'entrer 10 nombres entiers et de savoir si ces nombres entiers sont successifs ou non.

Exemple de sortie:

0 1 3 4 5 6 7 8 9 
Les nombres ne sont pas successives

11 12 13
Les nombres sont successives
Algorithme NbrSuccessive
Variables  myTab[10],i,check: entiers  
Début    
 check ← 0  // Suppose que les nombres sont dans l'ordre
 Ecrire("Entrer un nombre:") 
 Lire(myTab[1])   // Saisit le premier nombre

 Pour i de 2 à 10 faire
  Ecrire("Entrer un nombre:") 
  Lire(myTab[i])   // Saisit les autres nombres
   // Vérifie si le nombre courant est inférieur au précédent
   Si(myTab[i] < myTab[i-1])
         check ← 1  // Les nombres ne sont plus dans l'ordre croissant
   FinSi
 FinPour
 // Vérifie si tous les nombres sont restés dans l'ordre
 Si(check = 0) alors
   Ecrire("Les nombres sont successives")
  SiNon
   Ecrire("Les nombres ne sont pas successives")
 FinSi
Fin
  • check ← 0 : suppose au départ que les nombres sont dans l'ordre.
  • Lire(myTab[1]) : saisit le premier nombre du tableau.
  • Pour i de 2 à 10 : saisit les autres nombres un par un.
  • Si (myTab[i] < myTab[i-1]) : vérifie si un nombre est inférieur au précédent.
  • check ← 1 : indique qu'au moins une valeur n'est pas dans l'ordre croissant.
  • Si (check = 0) : si aucune inversion n'a été détectée, les nombres sont dans un ordre croissant.

Remarque: cet algorithme vérifie que les nombres sont classés par ordre croissant (non décroissant). Il ne vérifie pas qu'ils sont réellement successifs (par exemple 1, 2, 3, 4). Pour tester des nombres successifs, il faudrait vérifier que myTab[i] = myTab[i-1] + 1.

 
 

40. Ecrivez un algorithme qui demande l'âge et permet de renseigner sa catégorie sachant que les catégories sont les suivantes:
  • Gamin de 6 à 7 ans
  • Pupille de 8 à 9 ans
  • Jeune de 10 à 11 ans
  • Cadet après 12 ans

Exemple de sortie:

Entrer votre age : 6
Vous etes Gamin
Algorithme AgeCategorie
Variables age:réel
Début
   Ecrire("Entrer votre age:") 
   Lire(age)   // Lit l'âge de la personne

   // Vérifie si l'âge est compris entre 5 et 7 ans
   Si(age >= 5  et  age <= 7) alors
      Ecrire("Vous etes Gamin")
   FinSi
   // Vérifie si l'âge est compris entre 8 et 9 ans
   Si(age >= 8  et  age <= 9) alors 
       Ecrire("Vous etes Pupille")
   FinSi
   // Vérifie si l'âge est compris entre 10 et 11 ans
   Si(age >= 10  et  age <= 11) alors
       Ecrire("Vous etes Jeune")
   FinSi   
   // Vérifie si l'âge est supérieur ou égal à 12 ans
   Si(age >= 12) alors
       Ecrire("Vous etes Cadet") 
   FinSi
Fin
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *