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
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 <-- tmp2. 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 # indVal3. 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 # indVal4. 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 # indVal5. 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 # indVal6. 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 # indb7. 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 # indb8. 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 )
Retour à la page principale de (gH)