Exercices sur les classes

La structure Durée

Écrivez une structure Duree stockant une durée en seconde dans un champ DureeSeconde. La structure doit posséder un constructeur paramétrique recevant une durée en seconde ainsi que deux méthodes : DureeEnMinute() et DureeEnHeure() retournant la durée convertie en nombre de minutes (nombre entier) et en nombres d’heures (nombre entier).

Votre structure doit pouvoir permettre d’exécuter le code suivant :

Duree d(70); // durée de 70 secondes
std::cout << d.DureeSeconde;
std::cout << d.DureeEnMinute();
std::cout << d.DureeEnHeure();

La course de lapins

Écrivez le programme suivant :

  1. Créez une structure Lapin qui contient les champs suivants : numero (int), age (int) et position (int).

  2. Écrivez un constructeur permettant d’initialiser le numéro et l’âge du lapin. La position sera toujours initialisée à 0.

  3. Ajoutez une méthode Avancer() à la structure Lapin. Cette méthode ajoute une valeur aléatoire comprise entre 0 et 5 à la position du lapin. La fonction std::rand() et la fonction modulo devraient vous aider.

  4. Dans la fonction main(), créez trois lapins avec des numéros et des âges différents.

  5. La course démarre ! Appelez la méthode Avancer() 100 fois sur chacun des trois lapins.

  6. Le lapin qui a gagné est celui avec la position la plus grande. Affichez le numéro et l’âge du lapin gagnant.

Etat de la mémoire

A partir du code suivant :

struct C
{
        int a,b;
        C()                    { a = 0; b = 0; }
        void Init_a(int _a)    { a = _a; }
        void Init_b(int _b)    { b = _b; }
};

void Test()
{
        C T[5];

        for (int i = 0 ; i < 5 ; i++)
            T[i].Init_a(i);

        T[2] = T[4];

        for (int i = 0 ; i < 5 ; i+=2)
          T[i].Init_b(T[i].a);

}

Dessinez l’état de la mémoire à la fin de la fonction Test(). Un papier et un crayon reste la façon la plus simple de dessiner !

La structure Rectangle

Mettez en place le code suivant :

  1. Créez une structure Rectangle

  2. Ajoutez des champs : largeur, hauteur (entier) et position x et y (entier).

  3. Ajoutez un constructeur paramétrique qui initialise la taille et la position de l’objet.

  4. Ajoutez une méthode d’instance Aire() qui retourne l’aire du rectangle.

  5. Dans la fonction main() :

    1. Créez une nouvelle instance de la structure Rectangle de dimension 20 par 30 à la position (15,20).

    2. Affichez les valeurs des champs de l’objet créé.

    3. Affichez l’aire de l’objet créé en appelant la méthode Aire().

    4. Exécutez votre programme et vérifiez que tout fonctionne correctement.

  6. Ajoutez un constructeur sans argument qui initialise la forme comme un carré de coté 10 et de position (0,0). Pour cela, utilisez le chaînage de constructeur pour que le corps de votre constructeur ne contienne aucune instruction !

  7. Ajoutez une méthode DoublerTaille() qui multiplie la largeur et la longueur du rectangle par 2.

  8. Dans la fonction main() :

    1. Créez une nouvelle instance Rectangle en utilisant le constructeur sans argument.

    2. Doublez la taille du rectangle créé avec la méthode DoublerTaille.

    3. Affichez les dimensions du rectangle pour vérifier que tout a bien fonctionné.

  9. Ajoutez une méthode TestePlusPetit(?) qui prend en paramètre un rectangle r et retourne vrai si l’aire de r est plus petite que l’aire de l’instance courante. Attention ! Vous devez vous posez la question du passage par copie, par référence ou par const référence (dernier paragraphe du chapitre Copie et Référence).

  10. Dans la fonction main() :

    1. Testez la méthode TestePlusPetit() avec les objets rectangle déjà créés.