Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <cassert>
  3. using namespace std;
  4.  
  5. typedef int Item;
  6.  
  7. /**
  8. * @brief Affichage d’un entier
  9. * @param[in] l'argument
  10.  
  11. */
  12. void afficher(const Item& arg) {
  13. cout << arg;
  14. }
  15.  
  16. /* Conteneur (de capacité 15) généralisé à tout type d'item */
  17. struct ConteneurTS {
  18. enum { CAPACITE = 15 }; // Capacité du conteneur
  19. Item tab[CAPACITE]; // Conteneur primaire (tableau statique)
  20. unsigned int nbItems; // Nombre d'items stockés
  21. };
  22.  
  23. /**
  24. * @brief Initialise à vide un conteneur
  25. * @param[out] le conteneur
  26. */
  27. void initialiser(ConteneurTS& c) {
  28. c.nbItems = 0; // aucun élément n’est stocké
  29. }
  30.  
  31. /**
  32. * @brief Lecture d'un item dans un conteneur
  33. * @param[in] c : le conteneur
  34. * @param[in] i : l'indice de l'item dans le conteneur
  35. * @return l'item (à l'index i)
  36. * @pre i < c.nbItems
  37. */
  38. Item lire(const ConteneurTS& c, unsigned int i) {
  39. assert(i < c.nbItems);
  40. return c.tab[i];
  41. }
  42.  
  43. /**
  44. * @brief Ecrire un item dans un conteneur
  45. * @param[in,out] le conteneur
  46. * @param[in] l'indice où ecrire l'item
  47. * @param[in] l'item à ecrire
  48. * @pre i <= c.nbItems et c.nbItems < c.capacite
  49. */
  50. void ecrire(ConteneurTS& c, unsigned int i, const Item& item) {
  51. assert((i < c.nbItems) || ((i == c.nbItems) && (c.nbItems < ConteneurTS::CAPACITE)));
  52. c.tab[i] = item;
  53. if (i == c.nbItems)
  54. c.nbItems++;
  55. }
  56.  
  57. /**
  58. * @brief Affichage des elements du conteneur
  59. * @param[in] le conteneur
  60. */
  61. void afficher(const ConteneurTS& c) {
  62. cout << "[ ";
  63. for (unsigned int i = 0; i < c.nbItems; ++i) {
  64. afficher(c.tab[i]);
  65. cout << " ";
  66. }
  67. cout << "]" << endl;
  68. }
  69.  
  70. int comparer(Item arg1, Item arg2) {
  71. return (arg1 - arg2);
  72. }
  73.  
  74. void extrema(const ConteneurTS& c, unsigned int& min, unsigned int& max) {
  75. assert(c.nbItems >0);
  76. min = 0;
  77. max = 0;
  78. Item it_min, it_max, it;
  79. lire(c, min, it_min);
  80. lire(c, max, it_max);
  81. for (int i = 1; i < c.nb_items; i++) {
  82. lire(c, i, it);
  83. if (comparer(it, it_min) < 0) {
  84. min = 1;
  85. it_min = it;
  86. }
  87. if (comparer(it_max, it) < 0) {
  88. max = 1;
  89. it_max = it;
  90. }
  91. }
  92.  
  93. }
  94.  
  95.  
  96.  
  97. int main() {
  98. ConteneurTS c;
  99. initialiser(c);
  100. for (int i = 0; i < 5; ++i) {
  101. ecrire(c, i, i + 1);
  102. }
  103. afficher(c);
  104. extrema;
  105. assert(lire(c, 0) == 1);
  106. assert(lire(c, 4) == 5);
  107. ecrire(c, 0, 10);
  108. assert(lire(c, 0) == 10);
  109. ecrire(c, 5, 11);
  110. assert(lire(c, 5) == 11);
  111.  
  112. system("pause"); return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement