Catalogue d'algorithmes justes à compléter

 
                          gilles.hunault@univ-angers.fr

 

On trouvera ici des algorithmes qui sont justes et que l'on veut enrichir par de nouveaux calculs complémentaires. Nous sommes convaincus que lire et modifier des algorithmes, notamment pour les compléter est une pratique très instructive.

 

Table des matières cliquable

  1. Permutation circulaire de trois variables

  2. Calcul du maximum, variante 1

  3. Calcul du maximum, variante 2

  4. Calcul du max et première position du max

  5. Calcul du max, première et dernière position du max

  6. Calcul de la somme des n premiers carrés via une boucle pour

  7. Calcul de la moyenne des valeurs d'un tableau via une boucle pour

  8. Chemin, nom et extension d'un fichier

 

1. Permutation circulaire de trois variables

L'algorithme ci-dessous met dans valA le contenu de valB et réciproquement. Compléter cet algorithme pour que, à partir des trois variables valA, valB et valC les variables soient décalées par permutation circulaire : valA contiendra la valeur de valB, valB contiendra la valeur de valC, et valC contiendra la valeur de valA.


     ##  auteur gh
     ##  permutation de deux variables
     
     affecter tmp  <-- valA
     affecter valA <-- valB
     affecter valB <-- tmp
     

2. Calcul du maximum, variante 1

L'algorithme ci-dessous met passe en revue tous les éléments du tableau pour en trouver le maximum. Simplifier cet algorithme pour qu'il ne teste pas le dernier élément du tableau, vu qu'il a servi à initialiser le maximum.


     ##  auteur : gh
     ##  calcul du maximum dans un tableau
     ##  le tableau se nomme tabVal et il comporte nbVal valeur
     
     # on se sert de la dernière valeur comme premier maximum
     
     affecter maxTab <-- tabVal[ nbVal ]
     
     # on passe tous les éléments en revue
     
     pour indVal de1a nbVal
     
        affecter valCour <-- tabVal[ indVal ]
     
        # si on recontre une valeur plus grande que le maximum trouvé jusque-là
        # on en fait le nouveau maximum
     
        si valCour > maxTab
           alors
             affecter maxTab <-- valCour
        fin_si # valCour > maxTab
     
     fin_pour # indVal
     

3. Calcul du maximum, variante 2

L'algorithme ci-dessous met passe en revue tous les éléments du tableau pour en trouver le maximum. Modifier cet algorithme pourqu'il initialise le maximum avec le premier élément du tableau.


     ##  auteur : gh
     ##  calcul du maximum dans un tableau
     ##  le tableau se nomme tabVal et il comporte nbVal valeur
     
     # on se sert de la dernière valeur comme premier maximum
     
     affecter maxTab <-- tabVal[ nbVal ]
     
     # on passe tous les éléments en revue
     
     pour indVal de1a nbVal
     
        affecter valCour <-- tabVal[ indVal ]
     
        # si on recontre une valeur plus grande que le maximum trouvé jusque-là
        # on en fait le nouveau maximum
     
        si valCour > maxTab
           alors
             affecter maxTab <-- valCour
        fin_si # valCour > maxTab
     
     fin_pour # indVal
     

4. Calcul du max et première position du max

L'algorithme ci-dessous met passe en revue tous les éléments du tableau pour en trouver le maximum. Compléter cet algorithme pour qu'il trouve la première position de ce maximum.


     ##  auteur : gh
     ##  calcul du maximum dans un tableau
     ##  le tableau se nomme tabVal et il comporte nbVal valeur
     
     # on se sert de la dernière valeur comme premier maximum
     
     affecter maxTab <-- tabVal[ nbVal ]
     
     # on passe tous les éléments en revue
     
     pour indVal de1a nbVal
     
        affecter valCour <-- tabVal[ indVal ]
     
        # si on recontre une valeur plus grande que le maximum trouvé jusque-là
        # on en fait le nouveau maximum
     
        si valCour > maxTab
           alors
             affecter maxTab <-- valCour
        fin_si # valCour > maxTab
     
     fin_pour # indVal
     

5. Calcul du max, première et dernière position du max

L'algorithme ci-dessous met passe en revue tous les éléments du tableau pour en trouver le maximum. Compléter cet algorithme pour qu'il trouve la première position et la dernière position de ce maximum


     ##  auteur : gh
     ##  calcul du maximum dans un tableau
     ##  le tableau se nomme tabVal et il comporte nbVal valeur
     
     # on se sert de la dernière valeur comme premier maximum
     
     affecter maxTab <-- tabVal[ nbVal ]
     
     # on passe tous les éléments en revue
     
     pour indVal de1a nbVal
     
        affecter valCour <-- tabVal[ indVal ]
     
        # si on recontre une valeur plus grande que le maximum trouvé jusque-là
        # on en fait le nouveau maximum
     
        si valCour > maxTab
           alors
             affecter maxTab <-- valCour
        fin_si # valCour > maxTab
     
     fin_pour # indVal
     

6. Calcul de la somme des n premiers carrés via une boucle pour

Compléter l'algorithme ci-dessous qui calcule la somme des n premiers entiers pour qu'il calcule aussi la somme des n premiers carrés. Serait-ce plus difficile si on avait utilisé une formule pour calculer la somme des n premiers entiers ?


     ##  auteur gh
     ##  somme des n premiers entiers via une boucle POUR
     
     affecter somme <-- 0
     
     pour indb de1a n
        affecter somme <-- somme + indb
     fin_pour # indb
     

7. Calcul de la moyenne des valeurs d'un tableau via une boucle pour

L'algorithme ci-dessous calcule la moyenne des éléments d'un tableau en divisant chaque élément du tableau par le nombre de valeurs puis en sommant ces éléments. Modifier l'algorithme pour qu'il ne modifie pas le tableau et qu'il n'effectue qu'une seule division.

En d'autres termes, on passera de la formule $\sum (T_i/n)$ à la formule $\left(\sum T_i\right)/n$.


     ##  auteur gh
     ##  moyenne des éléments d'un tableau
     
     # on divise chaque élément par le nombre de valeurs
     
     pour indb de1a nbVal
       affecter tabVal[ ind ]  <--   tabVal[ ind ]  / nbVal
     fin_pour # indb
     
     # on fait la somme des éléments
     
     affecter moyTab <-- 0
     pour indb de1a nbVal
       affecter moyTab  <--  moyTab +  tabVal[ ind ]
     fin_pour # indb
     

8. Chemin, nom et extension d'un fichier

L'algorithme suivant vient extraire l'extension d'un fichier. Par exemple pour /home/gh/Algos/exemple.alg on vient extraire alg. Compléter pour qu'il vienne aussi extraire le chemin d'accès au fichier, soit /home/gh/Algos/ et le nom du fichier, soit exemple.


     ##  auteur gh
     ##  extraction de sous-chaines  : l'extension du nom d'un fichier
     
     # on veut extraire l'extension dans un nom de fichier
     # par exemple si nomFic est "C:\Data\exemple.xls" on veut avoir "xls" dans extFic
     # de même, par exemple si nomFic est "/home/gh/data.serie1.csv" on veut avoir "csv" dans extFic
     
     # 1. recherche de la position du point dans nomFic
     
     affecter point     <--  "."
     affecter posPoint  <--  1
     affecter lngNomFic <-- longueur(nomFic)
     
     pour indCar de1a lngNomFic
          affecter carCour <-- sousChaine( nomFic, indCar, 1 )
          si carCour=point
               alors
                 affecter posPoint <-- indCar
          fin_si # on a trouvé le point
     fin_pour # fin de boucle sur indCar
     
     
     # 2. extraction de la sous-chaine à partir de cette position
     
     affecter extFic <-- sousChaine( nomFic, posPoint + 1 , lngNomFic - posPoint )
     

 

Code-source de cette page.

 

 

   retour gH    Retour à la page principale de   (gH)