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

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 et 30 à 40.

 

41. Un magasin offre à ses clients 25% de réduction sur les montants d’achat supérieurs à 500 €. Ecrivez un algorithme qui permet d’entrer le prix total hors TVA et de calculer le montant TTC en tenant compte de la remise et du fait que la TVA = 10%.

Exemple de sortie:

Entrer le montant HT: 900
Le montant TTC est: 742.5
Algorithme CalculerTTC
Variables TTC,HT: réels
Début
   Ecrire("Entrer le montant HT:")
   Lire(HT)   // Lit le montant hors taxes
   
   TTC ← HT + HT * 0.1  // Calcule le montant TTC (TVA de 10 %)
   
    // Vérifie si le montant TTC dépasse 500
    Si(TTC > 500) alors
        TTC ← TTC - TTC * 0.25  // Applique une remise de 25 %
        Ecrire("Le montant TTC est:",TTC)
      SiNon 
        // Affiche le montant TTC sans remise
        Ecrire("Le montant TTC est:",TTC) 
    FinSi
Fin
Explications:

  • Lire(HT): saisit le montant hors taxes.
  • TTC ← HT + HT * 0.1: calcule le montant TTC en ajoutant une TVA de 10 %.
  • Si (TTC > 500): vérifie si le montant TTC est supérieur à 500.
  • TTC ← TTC – TTC * 0.25: applique une remise de 25 % sur le montant TTC.
  • Ecrire(…): affiche le montant TTC final, avec ou sans remise selon le cas.

Organigramme:

 
 

42. Ecrire un algorithme qui demande à l’utilisateur deux nombres n1 et n2 et lui indique ensuite si le produit de ces deux nombres est positif ou négatif. On prévoit dans le programme le cas où le produit peut être nul.

Exemple de sortie:

Entrer le 1er nombre:  -1.5
Entrer le 2éme nombre:  3
Le produit est négatif
-----------------------------
Entrer le 1er nombre:   1
Entrer le 2éme nombre:  3
Le produit est positif
-----------------------------
Entrer le 1er nombre:   0
Entrer le 2éme nombre:  3
Le produit est nul
Algorithme ProduitNbr
Variables n1,n2:réels
Début
  Ecrire("Entrer le 1er nombre:") 
  Lire(n1)   // Lit le premier nombre
  Ecrire("Entrer le 2éme nombre:") 
  Lire(n2)  // Lit le deuxième nombre
  
  // Vérifie si l'un des deux nombres est égal à 0
  Si(n1 == 0 ou n2 == 0) alors
      Ecrire("Le produit est nul")
  FinSi

  // Vérifie si le produit des deux nombres est négatif
  Si(n1*n2 < 0) alors
      Ecrire("Le produit est négatif")
  FinSi

  // Vérifie si le produit des deux nombres est positif
  Si(n1*n2 > 0) alors  
      Ecrire("Le produit est positif")
  FinSi
Fin
Explications:

  • Lire(n1) : saisit le premier nombre.
  • Lire(n2) : saisit le deuxième nombre.
  • Si (n1 = 0 ou n2 = 0) : vérifie si l’un des deux nombres est nul. Dans ce cas, leur produit est égal à 0.
  • Si (n1 * n2 < 0) : vérifie si le produit est négatif (un nombre positif et un nombre négatif).
  • Si (n1 * n2 > 0) : vérifie si le produit est positif (les deux nombres ont le même signe : tous les deux positifs ou tous les deux négatifs).

Remarque: en pseudo-code, on utilise généralement = pour tester l’égalité plutôt que ==. De plus, ces trois tests sont indépendants : un seul message sera affiché selon le signe du produit.
 
Organigramme:

 
 

43. Écrire un algorithme qui permette d’ajouter un commentaire sur le score saisi au clavier (si le score est supérieur à 10 alors il affiche « GOOD! » sinon « NOT GOOD! » (NB: le score est compris entre 0 et 20!).

Exemple de sortie:

Entrer le score: 15.5
GOOD!
------------------
Entrer le score: 5
NOT GOOD!
------------------
Entrer le score: -5
Score invalide!
Algorithme ValidateScore
Variables score :réel
Début
    Ecrire("Entrer le score: ")  
    Lire(score)  // Lit le score saisi

    // Vérifie si le score est en dehors de l'intervalle [0, 20]
    Si(score < 0 ou score > 20) alors
      Ecrire("Score invalide!")
	FinSi
    // Vérifie si le score est compris entre 0 et 9,99
    Si(score >= 0 et score < 10) alors
      Ecrire("NOT GOOD!")
	FinSi
    // Vérifie si le score est compris entre 10 et 20
    Si(score >= 10 et score <= 20) alors
      Ecrire("GOOD!")
Fin
Explications:

  • Lire(score) : saisit le score.
  • Si (score < 0 ou score > 20) : vérifie si le score est invalide (en dehors de l'intervalle de 0 à 20).
  • Si (score >= 0 et score < 10) : vérifie si le score est inférieur à 10, auquel cas le résultat est NOT GOOD!.
  • Si (score >= 10 et score <= 20) : vérifie si le score est compris entre 10 et 20, auquel cas le résultat est GOOD!.

Organigramme:

 
 

44. Le service de photocopie de votre université facture 0,50 € pour les 10 premières photocopies, 0,45 € pour les 20 suivantes et 0,30 € au-delà de 30 photocopies. Ecrivez un algorithme qui demande à l'utilisateur le nombre de photocopies réalisées et affiche la facture correspondante.

Exemple de sortie:

Entrez le nombre de papies: 25
Le prix total est: 11.25 €
Algorithme ServicePhotocopie
Variables N: entier
          prix: réel
Début
 Ecrire("Entrer le nombre de papies:")
 Lire(N)    // Lit le nombre de photocopies
 Si(N <= 20) alors 
    // Calcule le prix avec un tarif de 0,50 € par photocopie
    prix ← N * 0.50
 FinSi
 Si(N>20 et N<=30) alors 
    // Calcule le prix avec un tarif de 0,45 € par photocopie
    prix ← N * 0.45
 FinSi
 Si(N > 30) alors 
   // Calcule le prix avec un tarif de 0,30 € par photocopie
   prix ← N * 0.30
 FinSi
 // Affiche le prix total à payer
 Ecrire("Le prix total est: ",prix," €")   
Fin
Explications:

  • Lire(N) : récupère le nombre de photocopies demandé.
  • Si (N <= 20) : si le nombre de photocopies est inférieur ou égal à 20, chaque copie coûte 0,50 €.
  • Si (N > 20 et N <= 30) : entre 21 et 30 photocopies, chaque copie coûte 0,45 €.
  • Si (N > 30) : au-delà de 30 photocopies, chaque copie coûte 0,30 €.
  • prix ← N * tarif : calcule le prix total en multipliant le nombre de photocopies par le tarif correspondant.
  • Ecrire(...) : affiche le montant total à payer.

Organigramme:

 
 

45. Ecrivez un algorithme qui teste l'égalité de deux tableaux de nombres entiers (tailles 5). Le programme affiche TRUE si les éléments des deux tableaux correspondent, sinon il affiche FALSE.

Exemple de sortie:

1	2	3	4	5
1	2	3	4	5
TRUE

10	20	30	40	50
20	30	40	50	60
FALSE
Algorithme Comparer2Tableaux
Variables Tab1[5],Tab2[5],i,not_equal: entiers  
Début
  not_equal ← 0 // Suppose au départ que les 2 tableaux sont identiques
  Pour i de 1 à 5 faire
    Lire(Tab1[i])  // Saisit les 5 éléments du premier tableau
  FinPour
  Pour i de 1 à 5 faire
    Lire(Tab2[i])  // Saisit les 5 éléments du deuxième tableau
  FinPour
  // Compare les éléments des deux tableaux position par position
  Pour i de 1 à 5 faire  
    Si(Tab1[i] ≠ Tab2[i]) alors
       not_equal ← 1   // Signale qu'au moins un élément est différent
    FinSi
  FinPour

  // Vérifie si aucune différence n'a été trouvée
  Si(not_equal = 0) alors
     Ecrire("TRUE")   // Les deux tableaux sont identiques
  SiNon
     Ecrire ("FALSE")  // Les deux tableaux sont différents
  FinSi 
Fin
Explications:

  • not_equal ← 0 : initialise un indicateur à 0, ce qui signifie qu'aucune différence n'a encore été trouvée.
  • Lire(Tab1[i]) : remplit le premier tableau avec 5 entiers.
  • Lire(Tab2[i]) : remplit le deuxième tableau avec 5 entiers.
  • Si (Tab1[i] ≠ Tab2[i]) : compare les éléments situés à la même position dans les deux tableaux.
  • not_equal ← 1 : indique qu'au moins une différence a été détectée.
  • Si (not_equal = 0) : si aucune différence n'a été trouvée, les deux tableaux sont identiques.
  • Ecrire("TRUE") : indique que les deux tableaux sont identiques.
  • Ecrire("FALSE") : indique qu'ils sont différents.

Organigramme:

 
 

46. Écrire un algorithme qui permet la saisie de 5 nombres et qui calcule la différence entre la somme des nombres pairs et la somme des nombres impairs.

Par exemple : 3 5 2 4 6 => (2+4+6) - (3+5) = 4

Exemple de sortie:

Entrer un nombre: 3
Entrer un nombre: 5
Entrer un nombre: 2
Entrer un nombre: 4
Entrer un nombre: 6
La différence égale à 4
Algorithme CalcDifférence
Variables myTab[5],i,sum: entiers  
Début 
   sum ← 0  // Initialise la variable qui stockera le résultat final
   Pour i de 1 à 5 faire   // Répète l'opération pour les 5 nombres
      Ecrire("Entrer un nombre:") 
      Lire(myTab[i])   // Lit et stocke le nombre dans le tableau
      Si(myTab[i] mod 2 = 0) alors
         sum ← sum + myTab[i]   // Ajoute le nombre pair à la somme
      SiNon
         sum ← sum - myTab[i]  // Soustrait le nombre impair de la somme
      FinSi
   FinPour

   Ecrire("La différence égale à ",sum)   // Affiche le résultat final
Fin
Explications:

  • sum ← 0 : initialise le résultat à zéro.
  • Pour i de 1 à 5 : permet de traiter les 5 nombres saisis.
  • Lire(myTab[i]) : lit un nombre et le stocke dans le tableau.
  • myTab[i] mod 2 = 0 : vérifie si le nombre est pair.
  • sum ← sum + myTab[i] : ajoute les nombres pairs au résultat.
  • sum ← sum - myTab[i] : soustrait les nombres impairs du résultat.
  • Ecrire(...) : affiche la différence finale.

Organigramme:

 
 

47. Écrire un algorithme qui permet à l'utilisateur d'entrer une série de nombres se terminant par 0, et qui affiche à la fin le nombre d'occurrences du nombre 3.

Exemple de sortie:

2	8	3	1	3	3	6	3	0
3 existe 4 fois
Algorithme OccurenceNbr
Variables  i,Nbr:entiers  
Début  
   i ← 0   // Initialise le compteur d'occurrences du nombre 3
   Répéter 
     Lire(Nbr)   // Lit un nombre saisi par l'utilisateur
     Si(Nbr = 3) alors 
        i ← i + 1  // Incrémente le compteur si le nbr saisi est égal à 3
     FinSi		   
  Jusqu❛à(Nbr = 0)  // Arrête la saisie lorsque l'utilisateur entre 0
  
  // Vérifie si le nombre 3 a été trouvé au moins une fois
  Si(i ≠ 0) alors
     Ecrire(3," existe ",i," fois")  //Affiche nombre d'occurrences de 3
    SiNon    
     Ecrire(3," n'existe pas")  //Indique que nbr 3 n'a jamais été saisi
  FinSi    
Fin

L'algorithme ci-dessus, invite l'utilisateur à saisir des nombres entiers jusqu'à ce qu'il entre 0. Le code à l'intérieur de la boucle Répéter Jusqu'à sera exécuté au moins une fois avant de vérifier la condition de la boucle. La boucle se répète tant que l'utilisateur n'entre pas 0. On vérifie si le nombre saisi est égale à 3. Si c'est le cas on incrémente le compteur i. Après on vérifie Si(i ≠ 0) alors il existe un nombre d’occurrence du nombre spécifié sinon il n'existe pas.

Organigramme:

 
 

48. Écrire un algorithme pour afficher les mois en lettres en fonction du nombre saisi par l'utilisateur.

Exemple de sortie:

Entrer le numéro du mois: 1
Janvier

Entrer le numéro du mois: 3
Mars

Entrer le numéro du mois: 12
Décembre
Algorithme MoisEnLettre
Variables N:entier
Début
 Ecrire("Entrer le numéro du mois:")
 Lire(N)   // Lit le numéro du mois saisi par l'utilisateur
 Selon N faire  // Sélectionne le mois correspondant au numéro saisi
	1: Ecrire("Janvier")    // 1 correspond au mois de janvier
	2: Ecrire("Février")    // 2 correspond au mois de février
	3: Ecrire("Mars")       // 3 correspond au mois de mars
	4: Ecrire("Avril")      // 4 correspond au mois d'avril
	5: Ecrire("Mai")        // 5 correspond au mois de mai
	6: Ecrire("Juin")       // 6 correspond au mois de juin
	7: Ecrire("Juille")     // 7 correspond au mois de juillet
	8: Ecrire("Août")       // 8 correspond au mois d'août
	9: Ecrire("Septembre")  // 9 correspond au mois de septembre
	10: Ecrire("Octobre")   // 10 correspond au mois d'octobre
	11: Ecrire("Novembre")  // 11 correspond au mois de novembre
	12: Ecrire("Décembre")  // 12 correspond au mois de décembre
 Sinon
    // Affiche un message si N n'est pas compris entre
    Ecrire("Aucun mois ne correspondant à N")
 FinSelon
Fin

L'instruction Selon est une instruction de contrôle de flux dans laquelle nous pouvons définir une variable changeante et exécuter ensuite un code différent en fonction de la valeur de la variable changeante. C'est une alternative à Si SiNon.

Organigramme:

 
 

49. Écrire un algorithme qui calcule les nombres de Fibonacci jusqu'à 50.

Exemple de sortie:

Fibonacci jusqu'à 50: 1  1  2  3  5  8  13  21  34
Algorithme Fibonacci
Variables sum,f1,f2:entier
Début
   sum ← 0   // Initialise la variable qui stockera le prochain terme
   f1  ← 1  // Initialise le premier terme de la suite
   f2  ← 1  // Initialise le deuxième terme de la suite
   Pour i de 1 à 50 faire   // Répète le calcul pour générer 50 termes
      // Calcule le prochain terme en additionnant les deux précédents
      sum ← f1 + f2  
      // Décale f1 vers f2 pour préparer le prochain calcul
      f2 ← f1
      // Met à jour f1 avec le nouveau terme calculé
      f1 ← sum
      Ecrire(sum)  // Affiche le terme actuel de la suite
   FinPour
Fin
Explications:

  • sum ← 0 : initialise la variable qui contiendra le résultat de l'addition.
  • f1 ← 1 et f2 ← 1 : définissent les deux premières valeurs utilisées pour commencer la suite.
  • Pour i de 1 à 50 : répète le calcul 50 fois.
  • sum ← f1 + f2 : calcule le terme suivant en additionnant les deux termes précédents.
  • f2 ← f1 : décale la valeur de f1 vers f2.
  • f1 ← sum : met f1 à jour avec le nouveau terme calculé.
  • Ecrire(sum) : affiche chaque nouveau terme.

Organigramme:

 
 

50. Écrire un algorithme qui calculera une somme courante. L'utilisateur saisira des nombres qui seront ajoutés à la somme et, lorsqu'un nombre négatif sera rencontré, arrêtera d'ajouter des nombres et écrira le résultat final.

Exemple de sortie:

1 2 3 4 -1
La somme est 10
Algorithme SommeNbr
Variables  Nbr,sum:entiers  
Début  
   sum ← 0   // Initialise la somme à 0
   Répéter 
     Lire(Nbr)   // Lit un nombre saisi par l'utilisateur
    Si (Nbr >= 0) alors
       sum ← Nbr + sum  // Ajoute le nombre saisi à la somme   
    FinSi
  Jusqu'à(Nbr < 0) // Arrête saisie dès qu un nbr négatif est rencontré
  
  Ecrire("La somme est ",sum)     // Affiche la somme calculée
Fin
Explications:

  • sum ← 0 : initialise la variable sum à zéro. Cette variable va contenir la somme des nombres saisis.
  • Répéter : démarre une boucle qui permet de saisir plusieurs nombres.
  • Lire(Nbr) : demande à l'utilisateur de saisir un nombre et stocke sa valeur dans Nbr.
  • Si (Nbr >= 0) : vérifie si le nombre saisi est positif ou égal à zéro.
  • sum ← sum + Nbr : ajoute le nombre saisi à la somme uniquement s'il est positif ou nul.
  • Jusqu'à (Nbr < 0) : arrête la boucle dès qu'un nombre négatif est saisi. Le nombre négatif sert uniquement à arrêter la saisie et n'est pas ajouté à la somme.
  • Ecrire("La somme est ", sum) : affiche la somme finale de tous les nombres positifs ou nuls saisis.

Organigramme:

 

Laisser un commentaire

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