Aller au contenu

Exercice2

Exercice 2 : La fonction mystère

Implémentez l’algorithme suivant dans une fonction C++:

  1. 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, …)
  2. calculer \(max\) comme le plus grand nombre de 4 digits qu’on peut obtenir avec les digits de \(n\)
  3. calculer \(min\) comme le plus petit nombre de 4 digits qu’on peut obtenir avec les digits de \(n\)
  4. calculer \(d = max - min\)
  5. si \(d = n\) retourner \(d\) et l’algorithme est terminé
  6. 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 :

https://en.wikipedia.org/wiki/6174_(number)