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
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 + larg2. 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 = valA3. 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 ind4. 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
Retour à la page principale de (gH)