Défi 1 - Tri par luminosité
Ajoutez une fonction sortByBrightness qui trie une palette du plus sombre au plus lumineux. Vous pouvez utiliser un algorithme de tri simple (selection sort) - on verra std::sort dans les semaines suivantes.
// Déclaration dans colors.h :void sortByBrightness(std::vector<Color>& palette);
Affichez la palette avant et après le tri pour vérifier le résultat.
Défi 2 - Couleur la plus proche
Écrivez une fonction qui, étant donné des valeurs R, G, B quelconques, trouve la couleur la plus proche dans la palette (par distance de Manhattan) :
// Déclaration dans colors.h :int findClosest(const std::vector<Color>& palette, int r, int g, int b);// Version qui retourne une Color plutôt que l'index dans le vecteur. Utiliser le range based for loop aussiColor findClosest(const std::vector<Color>&, int r, int g, int b);
La « distance » entre deux couleurs se calcule comme : distance = |r1-r2| + |g1-g2| + |b1-b2|
Défi Array
Qu’est-ce qui ne va pas avec ce code ?
// Using a for loop with an array#include <iostream>#include <format>#include <array>int main(){ std::array<unsigned, 6> height {26, 37, 47, 55, 62, 75}; // An array of heights unsigned total {}; for (unsigned i : height) { total += height[i]; } const auto average{ static_cast<double>(total) / height.size() }; std::cout << std::format("The average height is {:.1f}.", average) << std::endl; unsigned count {}; for (unsigned i : height) { if (height[i] < average) ++count; } std::cout << std::format("{} people are below average height.", count) << std::endl;}