Tests préliminaires

Si un cas de triche est suspecté, la notation et l'évaluation prennent fin immédiatement. Pour le signaler, sélectionnez le flag "Cheat". Faites attention à l'utiliser avec calme, précaution et discernement.

Prérequis

Le code doit compiler avec c++ et les flags -Wall -Wextra -Werror
Pour rappel, ce projet doit suivre le standard C++98. Par conséquent,
des fonctions C++11 (ou autre standard) et les containers ne sont PAS
attendus.

Ne notez pas l'exercice si vous trouvez :

  • Une fonction implémentée dans un fichier d'en-tête (sauf pour les fonctions templates).
  • Un Makefile compilant sans les flags demandés et/ou avec autre chose que c++.

Sélectionnez le flag "Fonction interdite" (Forbidden function) si
vous rencontrez :

  • L'utilisation d'une fonction "C" (*alloc, *printf, free).
  • L'utilisation d'une fonction interdite dans le projet.
  • L'utilisation de "using namespace <ns_name>" ou du mot-clé "friend".
  • L'utilisation d'une bibliothèque externe, ou de fonctionnalités propres aux versions postérieures à C++98.


Exercice 00 : Megaphone

Cet exercice est un échauffement pour découvrir les I/O en C++.

Fonctionnement

Le but de cet exercice est de développer un to_upper ayant un comportement
spécifique si lancé sans paramètre.
Il doit être résolu avec une approche C++ (string/upper).


Exercice 01 : My Awesome Phonebook

Cet exercice est une première approche pour écrire une classe simple et l'utiliser dans un programme interactif. Si l'exercice ne fonctionne pas parfaitement, notez ce qui peut l'être.

Gestion d'erreur

Il y a un peu de gestion d'erreur à faire dans ce programme mais les comportements ne sont pas précisés dans le sujet. Quitter le programme proprement ou gérer les erreurs est ok. Un segfault ne l'est pas ! :D

Rate it from 0 (failed) through 5 (excellent)

La commande EXIT

Notez la commande EXIT en vous basant sur ce qui est demandé dans le sujet.

Visibilité

Les attributs de la classe Contact doivent être privés. La classe doit
exposer les accesseurs correspondants. Vérifiez également que tout ce
qui n'est utilisé que dans une classe (et pas seulement la classe Contact)
est privé et le reste public. Les débutants ont tendance à tout mettre en
public. C'est ce que vous devez vérifier ici.

Rate it from 0 (failed) through 5 (excellent)

La classe Contact et la classe Phonebook

Le code doit inclure une classe Contact (ou autre nom).
La classe doit contenir les attributs demandés.
Le code doit contenir une classe Phonebook avec un tableau de Contacts à
l'intérieur.

Boucle de Read/Eval

Le programme doit proposer une sorte de boucle read/eval :
Lecture puis traitement d'entrée, ensuite attente de nouvelle entrée jusqu'à
recevoir une commande EXIT.
La boucle devrait être faite de manière C++ (std::cin) !

La commande ADD

Notez la commande ADD en vous basant sur ce qui est demandé dans le sujet.

Rate it from 0 (failed) through 5 (excellent)

La commande SEARCH

Notez la commande SEARCH en vous basant sur ce qui est demandé dans le sujet. Une légère divergence dans le format attendu n'est pas importante. Cette partie vise à utiliser les "iomanips" en C++ et c'est ce sur quoi vous devez vous concentrer.

Rate it from 0 (failed) through 5 (excellent)


Exercice 02 : Le boulot de vos rêves

Le but de cet exercice est de récupérer les informations cachées au milieu du bruit et d'insérer du code dans un contexte existant.

Avez-vous sauvé le monde ?

Cet exercice est plutôt simple. Soit Account.cpp marche, soit il ne marche
pas. Comparez la sortie du programme avec le fichier de logs fourni.
Toute différence (à l'exception des horodatages ou de l'ordre des destructors) signifie que l'exercice est incorrect.

Ratings

Don’t forget to check the flag corresponding to the defense