420KH2 Consignes pour l'activité synthèse (A.S.)

Ce qui suit détaille les règles pour l'activité synthèse (A.S.) du cours pour la session H2018. Notez qu'il s'agit d'une activité individuelle.

Contexte

Normalement, j'aurais intégré l'A.S. aux travaux de vos autres cours, mais je ne pourrai tristement pas le faire cette année... car je suis bêtement débordé. Pour cette raison, notre A.S. sera une activité individuelle propre à notre cours plutôt qu'une partie d'un travail commun à plusieurs cours.

Consignes

Considérant que vous n'avez que peu de temps pour faire ce travail, il sera bref. Étant donné le cadre de travail suivant :

#include <algorithm>
#include <iostream>
#include <random>
#include <vector>
class Carte {
   std::vector<unsigned int> distances;
   int lar;
public:
   Carte(int n) : distances(n * n), lar{ n } {
      std::random_device rd;
      std::mt19937 prng { rd() };
      std::uniform_int_distribution<> d100{ 1, 100 };
      std::generate(begin(distances), end(distances), [&] {
         return d100(prng);
      });
      for(int i = 0; i != n; ++i)
          distances[i * n + i] = 0;
   }
   unsigned int* operator[](int n) {
      return &distances[n * hauteur()];
   }
   const unsigned int* operator[](int n) const {
      return &distances[n * hauteur()];
   }
   int hauteur() const noexcept { return lar; }
   int largeur() const noexcept { return lar; }
};
int main() {
   using namespace std;
   Carte carte{ 3 };
   for(int i = 0; i != carte.hauteur(); ++i) {
      for(int j = 0; j != carte.largeur(); ++j) {
         cout << carte[i][j] << ' ';
      }
      cout << endl;
   }
}

Sachant qu'avec Carte carte{n}, la variable carte représente une ville dans laquelle se trouvent n maisons, et que son attribut distance représente le coût (temps, argent, effort, peu importe...) pour aller d'une maison à une autre (l'opérateur [] d'une Carte donne les distances à partir d'une maison donnée), votre travail est d'écrire deux fonctions, chacune accompagnée d'une fonction de test :

Chaque fonction de test que vous écrirez devra présenter le chemin le plus court identifié par vos fonctions.

On veut que vos tests aient la particularité suivante :

Paramètres de remise

La remise imprimée devra être faite à la dernière séance de la session (séance T14)


Valid XHTML 1.0 Transitional

CSS Valide !