lundi 22 juin 2015

Cours langage C n°16 - Allocation dynamique et Structure

Allocation dynamique + Structure


PRÉREQUIS

Cours n°7 - Adresses mémoire et pointeurs
Cours n°13 - Définition de synonymes
Cours n°15 - Allocation dynamique

PROBLÉMATIQUE

Vous êtes dans une banque et on vous demande de créer un gestionnaire de comptes clients. Pour cela il nous faudra pouvoir y créer un compte dont les différents attributs seront:
  • Le nom du client
  • Le prénom du client
  • L'id du client
  • La somme courante
  • Un tableau représentant les différentes actions sur le compte (achat, crédit, ...)


Une banque contient donc plusieurs comptes... avec ses attributs
  • Liste des comptes
  • Nombre de comptes
  • Nombre de comptes dans le moins
  • Nombre de comptes dans le plus
  • Somme totale des sommes courantes de chaque compte


Version, vous l'admettrez, très simplifiée :)

L'objet Compte

On est bien d'accord que pour avoir tout ces renseignements, il nous faut créer des actions, dont les attributs seront
  • G/D (gains ou dépenses)
  • valeur du gain ou dépense
  • Date
  • Raison


On va donc avoir un objet Compte qui sera ressemblant à

Code:

typedef struct{
    int jour;
    int mois;
    int annee;
} Date;

typedef struct{
    enum {G, D} type; /* gain ou dépense */
    double valeur; /* valeur du gain ou de la dépense */
    Date date;
    char raison[31]; /* raison du gain ou dépense - pas plus de 30 caractères */
} Action;

typedef struct{
    char *nom;
    char *prenom;
    char ID[12]; /* ID du détenteur du compte */
    double somme; /* somme courante */
    Action *actions; /* liste des actions */
} Compte;

Comme on le voit ça se complique, ( eh on est au cours n°16, hein ;) ), il y a déjà pas mal de structures, mais ça se fait tout seul si l'organisation rigoureuse est au rendez-vous !

De loin on voit tout de suite ce qui est embêtant ! C'est la gestion des différentes actions, où il va falloir
Ajouter des actions
Supprimer des actions (en cas d'erreur)

et encore on ne gère pas les ordres des actions selon les dates par exemple... bref ça peut devenir très compliqué !

Création de la liste d'actions

Eh bien vous l'aurez deviné, cette partie est lourde car on ne connaît pas d'avance le nombre total d'actions (donc la taille de actions) sur la durée de vie d'un compte, et donc on est obligé d'ajouter au fur et à mesure une action dans la liste d'actions, ce qui impose l'allocation dynamique.

En cours d'écriture


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1CnvYqQ
via IFTTT

Aucun commentaire:

Enregistrer un commentaire