Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cassert>
- using namespace std;
- typedef int Item;
- /**
- * @brief Affichage d’un entier
- * @param[in] l'argument
- */
- void afficher(const Item& arg) {
- cout << arg;
- }
- /* Conteneur (de capacité 15) généralisé à tout type d'item */
- struct ConteneurTS {
- enum { CAPACITE = 15 }; // Capacité du conteneur
- Item tab[CAPACITE]; // Conteneur primaire (tableau statique)
- unsigned int nbItems; // Nombre d'items stockés
- };
- /**
- * @brief Initialise à vide un conteneur
- * @param[out] le conteneur
- */
- void initialiser(ConteneurTS& c) {
- c.nbItems = 0; // aucun élément n’est stocké
- }
- /**
- * @brief Lecture d'un item dans un conteneur
- * @param[in] c : le conteneur
- * @param[in] i : l'indice de l'item dans le conteneur
- * @return l'item (à l'index i)
- * @pre i < c.nbItems
- */
- Item lire(const ConteneurTS& c, unsigned int i) {
- assert(i < c.nbItems);
- return c.tab[i];
- }
- /**
- * @brief Ecrire un item dans un conteneur
- * @param[in,out] le conteneur
- * @param[in] l'indice où ecrire l'item
- * @param[in] l'item à ecrire
- * @pre i <= c.nbItems et c.nbItems < c.capacite
- */
- void ecrire(ConteneurTS& c, unsigned int i, const Item& item) {
- assert((i < c.nbItems) || ((i == c.nbItems) && (c.nbItems < ConteneurTS::CAPACITE)));
- c.tab[i] = item;
- if (i == c.nbItems)
- c.nbItems++;
- }
- /**
- * @brief Affichage des elements du conteneur
- * @param[in] le conteneur
- */
- void afficher(const ConteneurTS& c) {
- cout << "[ ";
- for (unsigned int i = 0; i < c.nbItems; ++i) {
- afficher(c.tab[i]);
- cout << " ";
- }
- cout << "]" << endl;
- }
- int comparer(Item arg1, Item arg2) {
- return (arg1 - arg2);
- }
- void extrema(const ConteneurTS& c, unsigned int& min, unsigned int& max) {
- assert(c.nbItems >0);
- min = 0;
- max = 0;
- Item it_min, it_max, it;
- lire(c, min, it_min);
- lire(c, max, it_max);
- for (int i = 1; i < c.nb_items; i++) {
- lire(c, i, it);
- if (comparer(it, it_min) < 0) {
- min = 1;
- it_min = it;
- }
- if (comparer(it_max, it) < 0) {
- max = 1;
- it_max = it;
- }
- }
- }
- int main() {
- ConteneurTS c;
- initialiser(c);
- for (int i = 0; i < 5; ++i) {
- ecrire(c, i, i + 1);
- }
- afficher(c);
- extrema;
- assert(lire(c, 0) == 1);
- assert(lire(c, 4) == 5);
- ecrire(c, 0, 10);
- assert(lire(c, 0) == 10);
- ecrire(c, 5, 11);
- assert(lire(c, 5) == 11);
- system("pause"); return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement