C++: Révisions du C

 

On désire développer un gestionnaire de rendez-vous en mémoire. Un rendez-vous comprend le nom et le numéro de téléphone de la personne avec qui on a rendez-vous, le lieu et la date du rendez-vous.

1ère Version

Dans un premier temps, on utilise les structures C suivantes :

#define LGNOM 100
#define LGNUM 20
#define LGLIEU 100
#define LGDATE 20
#define TAILLE_CARNET 100

struct TRendezVous
{
  char nom[LGNOM];
  char num_tel[LGNUM];
  char lieu[LGLIEU];
  char date[LGDATE];
};

struct TCarnet 
{
  int nb;
  struct TRendezVous rdvs[TAILLE_CARNET]; /* tableau de struct TRendezVous */
};

Les chaînes de caractères sont stockées dans des tableaux de caractères de tailles fixes (pas d'allocation dynamique). Tous les rendez-vous sont gérés au sein d'un tableau de structures de taille fixe (là encore, pas d'allocation dynamique).

Il est demander de mettre en oeuvre les fonctions suivantes conformément à la convention vue en cours.

  1. rendez_vous_creer, carnet_creer, rendez_vous_detruire et carnet_detruire;
  2. rendez_vous_afficher pour l'affichage du rendez_vous qui lui est passée en paramètre;
  3. rendez_vous_saisir qui permet la saisie au clavier des données d'un rendez_vous;
  4. carnet_ajouter_rendez_vous qui ajoute un rendez_vous dans un carnet;
  5. carnet_rechercher_rendez_vous qui recherche tous les rendez_vous pour une date donnée; le résultat est inséré dans un carnet vierge passé en argument;
  6. carnet_retirer_rendez_vous qui retire un rendez_vous du tableau.

Le programme de gestion des rendez-vous comprend un menu simple qui permet l'appel des fonctions précédentes.

2ème Version

Modifier la première version de façon à utiliser l'allocation dynamique. On utilisera les structures C suivantes :

#define INPUT_BUF 1024 /* pour les entrees au clavier */

struct TRendezVous
{
  char * nom;
  char * num_tel;
  char * lieu;
  char * date;
};

struct TCarnet 
{
  int nb;
  struct TRendezVous ** rdvs; /* tableau de pointeurs sur des struct TRendezVous */
};

NB : Normalement, le programme principal ne doit pas subir de modification.