# Cours 7 - On retourne au Gym

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 aussi
Color 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;
}