Advertisement
nathanaaaa

Untitled

Jan 21st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. /**
  2. * @file FileAPriorité.cpp
  3. * @brief Codage de la fonction FileAPriorité
  4. * @author Samy Letombe, Nathan Pelissiere, Mohammed Senhadji
  5. * @version 1 20/12/17
  6. */
  7.  
  8. #include <cassert>
  9. #include "FileAPriorité.h"
  10. #include "BlocData.h"
  11.  
  12. /**
  13.  * @brief initialiser une file vide
  14.  * la file est allouée en mémoire dynamique
  15.  * @see detruire, elle est à désallouer en fin d’utilisation
  16.  * @param[out] f : la file à initialiser
  17.  * @param[in] capa : capacité de la file (nb maximum d‘items stockés)
  18.  * @pre capa>0
  19.  */
  20. void initialiser(File& f, unsigned int capa) {
  21.     assert(capa>0);
  22.     initialiser(f.c, capa); // @see initialiser de ConteneurTD
  23.     f.indPremier = 0;
  24.     f.indProchain = 0;
  25.     f.nb = 0;
  26. }
  27.  
  28. /**
  29.  * @brief Désallouer une file
  30.  * @see initialiser, la file a déjà été allouée en mémoire dynamique
  31.  * @param[out] f : la file
  32.  */
  33. void detruire(File& f) {
  34.      detruire(f.c); // @see detruire de ConteneurTD
  35. }
  36.  
  37. /**
  38.  * @brief Test de file pleine
  39.  * @param[in] f : la file testée
  40.  * @return true si f est pleine, false sinon
  41.  */
  42. bool estPleine(const File& f) {
  43.     return (f.nb == f.c.capacite); // @see type ConteneurTD
  44. }
  45.  
  46. /**
  47.  * @brief Test de file vide
  48.  * @param[in] f : la file testée
  49.  * @return true si f est vide, false sinon
  50.  */
  51. bool estVide(const File& f) {
  52.     return (f.nb == 0);
  53. }
  54.  
  55. /**
  56.  * @brief Lire l'item en tête de file
  57.  * @param[in] f : la file
  58.  * @return la valeur de l'item en tête de file
  59.  * @pre la file n’est pas vide
  60.  */
  61. BlocData tete(const File& f) {
  62.     assert(!estVide(f));
  63.     return lire(f.c, f.indPremier); // @see lire, dans ConteneurTD
  64. }
  65.  
  66. /**
  67.  * @brief Entrer un item dans la file
  68.  * @param[in,out] f : la file
  69.  * @param[in] it : l'item à entrer
  70.  * @pre f n’est pas pleine
  71.  */
  72. void entrer(File& f, const BlocData& it) {
  73.     assert(!estPleine(f));
  74.     BlocData C;
  75.     bool testeur, fin = false;
  76.  
  77.  
  78.  
  79.    
  80.     for (int i = 0; i < f.nb; ++i) {
  81.         C = lire(f.c, i);
  82.         testeur = enordre(it, C);
  83.  
  84.         if (testeur == true) {
  85.             fin = true;
  86.             for (unsigned int j = f.nb; j > i; j--) {
  87.                 ecrire(f.c, j, lire(f.c, j - 1));
  88.             }
  89.            
  90.             ecrire(f.c, i, it);
  91.             break;
  92.         }
  93.  
  94.  
  95.     }
  96.    
  97.         if (fin == false) {
  98.             ecrire(f.c, f.indProchain, it);
  99.         }
  100.         f.indProchain = (f.indProchain + 1) % f.c.capacite;
  101.         f.nb++;
  102.  
  103. }
  104.  
  105. /**
  106.  * @brief Sortir l’item tête de file
  107.  * @param[in,out] f : la file
  108.  * @pre f n’est pas vide
  109.  */
  110. void sortir(File& f) {
  111.     assert(!estVide(f));
  112.     f.indPremier = (f.indPremier+1)%f.c.capacite;
  113.     f.nb--;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement