Catalogue d'algorithmes incorrects à corriger

 
                          gilles.hunault@univ-angers.fr

 

On trouvera ici des algorithmes qui sont volontairement incorrects et sans doute faciles à corriger. Nous sommes convaincus que lire et modifier des algorithmes que l'on n'a pas écrit soi-même est une pratique très instructive.

 

Table des matières cliquable

  1. Calcul du périmètre d'un rectangle

  2. Permutation de deux variables numériques sans variable intermédiaire

  3. Calcul du maximum d'un tableau d'entiers

  4. Extraction de sous-chaines de caractères

  5. Tri d'un tableau par paires

 

1. Calcul du périmètre d'un rectangle


     ##  auteur gh
     ##  calcul du périmètre perim d'un rectangle de longueur long et de largeur larg
     ##  validation-via : perimetre ##
     
     ###########################################################
     #                                                         #
     #   ATTENTION : cet algorithme est volontairement FAUX    #
     #                                                         #
     #   c'est à vous de trouver la ou les erreurs             #
     #                                                         #
     ###########################################################
     
     AFFECTER perim <-- 2*long + larg
     

2. Permutation de deux variables numériques sans variable intermédiaire


     ##  auteur gh
     ##  permutation des deux variables numériques valA et valB sans variable intermédiaire
     ##  validation-via : perm2var ##
     
     ###########################################################
     #                                                         #
     #   ATTENTION : cet algorithme est volontairement FAUX    #
     #                                                         #
     #   c'est à vous de trouver la ou les erreurs             #
     #                                                         #
     ###########################################################
     
     # valeurs d'origine
     
     AFFECTER valA <-- aOrg
     AFFECTER valB <-- bOrg
     
     # tentative de permutation sans utiliser aOrg et bOrg
     
     AFFECTER valA <-- valB
     AFFECTER valB <-- valA
     
     # remarque : vous n'avez pas le droit de rajouter d'autre variable
     # vous devez tout baser sur valA, valB et des expression sur ces variables
     # on pourra noter, à titre d'exemple et d'indication sur la solution,
     # que, mathématiquement, ( valA + valB ) - valB = valA
     

3. Calcul du maximum d'un tableau d'entiers


     ##  auteur gh
     ##  calcul du maximum d'un tableau de nombres entiers
     ##  validation-via : calcmaxent ##
     
     ###########################################################
     #                                                         #
     #   ATTENTION : cet algorithme est volontairement FAUX    #
     #                                                         #
     #   c'est à vous de trouver la ou les erreurs             #
     #                                                         #
     ###########################################################
     
     # le tableau des données se nomme tabVal
     # et il contient nbVal données
     
     affecter valMax <-- 0
     pour ind de1a nbVal
         affecter valCour <-- tabVal[ ind ]
         si valCour>valMax
            alors
              affecter valMax <-- valCour
         fin_si # test de nouveau maximum
     fin_pour # fin de boucle sur ind
     

4. Extraction de sous-chaines de caractères


     # auteur gh
     # extraction de sous-chaines  : l'extension du nom d'un fichier
     ## validation-via : extrext ##
     
     ###########################################################
     #                                                         #
     #   ATTENTION : cet algorithme est volontairement FAUX    #
     #                                                         #
     #   c'est à vous de trouver la ou les erreurs             #
     #                                                         #
     ###########################################################
     
     # 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, lngNomFic - 2 )
     

5. Tri d'un tableau par paires


     # auteur gh
     # tri d'un tableau par paires (tri à bulles)
     
     ###########################################################
     #                                                         #
     #   ATTENTION : cet algorithme est volontairement FAUX    #
     #                                                         #
     #   c'est à vous de trouver la ou les erreurs             #
     #                                                         #
     ###########################################################
     
     # le tableau des données se nomme tabVal
     # et il contient nbVal données
     
     pour ind de1a nbVal
         pour jnd de1a nbVal
            affecter valCour1 <-- tabVal[ ind ]
            affecter valCour2 <-- tabVal[ jnd ]
            si valCour1>valCour2
               alors
                 affecter tmpVal   <-- valCour1
                 affecter valCour1 <-- valCour2
                 affecter valCour2 <-- tmpVal
            fin_si # test d'échange des valeurs
         fin_pour # fin de boucle sur jnd
     fin_pour # fin de boucle sur ind
     

 

Code-source de cette page.

 

 

   retour gH    Retour à la page principale de   (gH)