Exercices corrigés C++ les classes et l’héritage – Partie 2

Avec des exercices corrigés en C++, vous pratiquerez divers concepts du langage C++. Vous commencerez par des exercices C++ de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.

Vous pouvez utiliser l’éditeur C++ suivant pour résoudre les exercices suivants: (Cliquez sur l’onglet input si vous souhaitez entrer des valeurs, cliquez sur Run pour exécuter votre programme, le résultat sera affichée sur l’onglet output).

Exercice 1:

Créer une classe appelée Time, qui a des membres de type int tels que hours, minutes et secondes.(rendez-les private)

  • Un constructeur doit initialiser ces données à 0
  • Un autre constructeur devrait l’initialiser à des valeurs fixes.
  • Une fonction membre devrait l’afficher, au format 11:59:59.
  • Une autre fonction pour renvoyer les données de chaque membre nommez-les getHours, getMin et getSec
  • Une fonction membre doit ajouter deux objets de type Time passé en arguments.
  • Rendre la fonction membre appropriée constante.

Votre classe doit fonctionner avec le code ci-dessous et affiche la sortie.

int main() {

    Time t1(4, 45, 59), t2(1, 20, 32);
    Time t3;

    t1.getTime();   //04:45:59
    t2.getTime();   //01:20:32
	
    t3.addTime(t1, t2);
   t3.getTime();   //06:06:31
}
#include <iostream>
#include <iomanip>

using namespace std;
 
class Time {
	private:
		 int hours;
		 int minutes;
		int seconds;
	 
	public:
		Time() { setTime(0, 0, 0); }
		Time(int h, int m, int s) { setTime(h, m, s); }
		
		void setTime(int h, int m, int s)
		{
			 if(h > 23 || h < 0) throw "Erreur!\n";
			 if(m > 59 || m < 0) throw "Erreur!\n";
			 if(s > 59 || s < 0) throw "Erreur!\n";
			 hours = h; minutes = m; seconds = s;
		}
		
		void getTime(void) const
		{
			cout << setw(2) << setfill('0') << hours << ":"
				   << setw(2) << setfill('0') << minutes << ":"
				   << setw(2) << setfill('0') << seconds << endl;			 
		}

		int getHours() const { return hours; }
		int getMin() const { return minutes; }
		int getSec() const { return seconds; }

		void addTime(Time t1, Time t2)
		{
			this->seconds = t1.seconds + t2.seconds;
			this->minutes = t1.minutes + t2.minutes + (this->seconds/60);
			this->hours = t1.hours + t2.hours + (this->minutes/60);
			this->minutes %= 60;
			this->seconds %= 60;
		}
};

int main() {

    Time t1(4, 45, 59), t2(1, 20, 32);
    Time t3;

    t1.getTime();
    t2.getTime();

    t3.addTime(t1, t2);
    t3.getTime();
}
Exercice 2:

Ecrivez un programme qui simule la gestion d’un simple compte bancaire. Le compte est créé avec un solde initial. Il est possible de déposer et de retirer des fonds, d’ajouter des intérêts et de connaître le solde actuel. Cela devrait être implémenté dans une classe nommée Account qui comprend:

    • Un constructeur par défaut qui met le solde initial à zéro.
    • Un constructeur qui accepte une balance initial comme paramètre.
    • Une fonction getBalance qui renvoie le solde actuel.
    • Une méthode deposit pour déposer un montant spécifié.
    • Une méthode withdraw pour retirer un montant spécifié.
    • Une méthode addInterest pour ajouter de l’intérêt au compte.

La méthode addInterest prend le taux d’intérêt comme paramètre et modifie le solde du compte en solde * (1 + taux d’intérêt).

Votre classe doit fonctionner avec le code ci-dessous et affiche la sortie.

int main()
{
	Account account1;
	Account accoun2(3000);
	
	account1.deposit(100);
	accoun2.withdraw(1000);
	account1.addInterest(0.3);
	
	cout << account1.getBalance() << "\n";   //130
	cout << accoun2.getBalance();            //2000
	
	return 0;
}
#include <iostream>

using namespace std;
 
class Account
{
private:
	double balance = 0;

public:
	Account() : balance(0) {}
	Account(double initial_balance) : balance(initial_balance) {}
	double getBalance() const { return balance; }
	void deposit(double amount) { balance += amount; }
	void withdraw(double amount) { balance -= amount; }
	void addInterest(double rate) { balance = balance*(1 + rate); }
};

int main()
{
	Account account1;
	Account accoun2(3000);
	
	account1.deposit(100);
	accoun2.withdraw(1000);
	account1.addInterest(0.3);
	
	cout << account1.getBalance() << "\n";   //130
	cout << accoun2.getBalance();            //2000
	
	return 0;
}
Exercice 3:

Écrivez un programme qui définit une classe appelée Shape avec un constructeur qui donne de la valeur à la largeur(x) et à la hauteur(y). Définir la méthode area() dans les deux sous-classes Triangle et Rectangle, qui calculent l’aire. Dans la méthode principale main, définissez deux variables, un triangle et un rectangle, puis appelez la fonction area() dans ces deux variables.

Notez que l’aire du triangle est = largeur * hauteur / 2 et l’aire du rectangle est = largeur * hauteur.

Votre classe doit fonctionner avec le code ci-dessous et affiche la sortie.

int main (){

	Rectangle rectangle(2,3);
	Triangle triangle(2,3);
	cout << rectangle.area() << endl;   //6
	cout << triangle.area() << endl;    //3 
	return 0;
}
#include <iostream>

using namespace std;

class Shape
{
protected:
	float x, y;
public:
	Shape(float _x, float _y)
	{
		x = _x;
		y = _y;
	}
};

class Rectangle: public Shape
{
public:
	Rectangle(float _x, float _y) : Shape(_x, _y) {}

	float area()
	{
		return (x * y);
	}
};

class Triangle: public Shape
{
public:
	Triangle(float _x, float _y) : Shape(_x, _y) {}

	float area()
	{
		return (x * y / 2);
	}
};

int main (){

	Rectangle rectangle(2,3);
	Triangle triangle(2,3);
	cout << rectangle.area() << endl;   //6
	cout << triangle.area() << endl;    //3 
	return 0;
}
Exercice 4:

Écrivez un programme avec une classe mère A et une classe fille B. Les deux doivent avoir une méthode void display() qui affiche un message (différent pour la classe mère et la classe fille) .Dans la méthode principale créer un objet de la classe fille et appelez la méthode display() sur elle.

#include <iostream>

using namespace std;

class A{
public:
	void display ()
	{
		cout << "La méthode display de la classe A est exécutée\n";
	}
};

class B : public A{
public:
	void display ()
	{
		cout << "La méthode display de la classe B est exécutée\n";
	}
};

int main ()
{
	B b;
	b.display();
	return 0;
}
QCM C++

2 réflexions sur “Exercices corrigés C++ les classes et l’héritage – Partie 2

  • septembre 4, 2021 à 6:33 pm
    Permalien

    pour l’exercice 1, il y »a une petite erreur dans la fonction addTime?? il manque un modulo 24 sur les heures car si on fait un addition de 23:59:00 + 01:30:00 le code actuel va donner 25:29:00 au lieu de 01:29:00

    Répondre
  • mai 31, 2022 à 3:32 pm
    Permalien

    L’exemple de l’exercice 3 est a corriger ou à enlever, merci pour les exercices .

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *