Exercice2
Exercice 2 : La fonction mystère
Implémentez l’algorithme suivant dans une fonction C++:
- soit \(n\) un nombre tel que \(n \leq 9999\) et qui ne soit pas composé de 4 fois le même chiffre (c’est-à-dire pas 0000, 1111, 2222, …)
- calculer \(max\) comme le plus grand nombre de 4 digits qu’on peut obtenir avec les digits de \(n\)
- calculer \(min\) comme le plus petit nombre de 4 digits qu’on peut obtenir avec les digits de \(n\)
- calculer \(d = max - min\)
- si \(d = n\) retourner \(d\) et l’algorithme est terminé
- sinon, assigner \(d\) à \(n\) et reprendre le point 2.
Pour cet exercice, nous vous recommandons d’utiliser des vecteurs et la fonction std::sort proposée
par la bibliothèque algorithm. Votre programme pourrait importer les bibliothèques suivantes :
#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
Voici quelques opérations que vous pouvez faire avec un vecteur d’entiers :
std::vector<int> a;
a.insert(a.begin(), x); // insert x at the beginning of the vector
a.push_back(x); // append x at the end of the vector
std::sort(a.begin(), a.end()); // sort the vector a (ascending)
std::sort(a.begin(), a.end(), std::greater<int>()); // sort descending
Note
Si vous voulez savoir pourquoi votre méthode retourne toujours 6174, lisez l’article suivant sur Wikipedia :