Exercice (C++) : Initiation à la programmation orienté objet

Exercice C++ Avec La Correction : Initiation à la programmation orienté objet

Exercice (C++) : Initiation à la programmation orienté objet

Ennoncè:

Réaliser une structure Point permettant de manipuler un point d’un plan. Ecrire :

  • Une fonction saisie(float a, float b) recevant en entrée, les coordonnées d’un point
  • une fonction depacer(float a, float b) effectuant une translation définie par ses
    deux arguments float.
  • Deux fonctions membres nommées abscisse() et ordonnee() retournant
    respectivement l’abscisse et l’ordonnée d’un point.
  • Une fonction comparer(Point p) : vérifie si deux points sont identiques
  • - Une fonction calcule(Point p) la distance entre deux points

Ecrivez un programme de test qui effectue les traitements suivants :

  • crée trois points p1, p2 et p3
  • affiche sous forme de chaîne de caractères les coordonnées de ces trois points,
  • calcule la distance de P1 à l’origine
  • calcule la distance entre P1 et P2
  • déplacer le point P2 par (20, 13)
  • vérifie si deux points se coïncident et indique les deux points les plus proches.

Solution:

#include 
#include 
using namespace std;

class Point
{
	float a, b;
	
	public:
		void saisie(float, float);
		void deplacer(float, float);
		float getabscisse();
		float getordonnee();
		void comparer(Point p);
		void calcule(Point p);
		void afficher();
};

void Point::saisie(float a = 0, float b = 0)
{
	this->a = a;
	this->b = b;
}

void Point::deplacer(float a, float b)
{
	this->a += a;
	this->b += b;
}

float Point::getabscisse()
{
	return a;
}

float Point::getordonnee()
{
	return b;
}

void Point::comparer(Point p)
{
	if(getabscisse() == p.getabscisse() && getordonnee() == p.getordonnee())
	{
		cout << "Les deux points sont identique" << endl;
	}
	else
	{
		cout << "Les deux points ne sont pas identique" << endl;
	}
}

void Point::calcule(Point p)
{
	cout << "la distance entre les deux points est : " << sqrt(pow(p.a - a, 2) - pow(p.b - b, 2)) << endl;
}

void Point::afficher()
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

main()
{
	Point o;
	Point p1;
	Point p2;
	Point p3;
	
	o.saisie(0, 0);
	p1.saisie(5.2, 3.4);
	p2.saisie(5.2, 3.4);
	p3.saisie(5.2, 3.4);
	cout << "l'affichage:" << endl << endl;
	p1.afficher();
	p2.afficher();
	p3.afficher();
	cout << "calcule:" << endl << endl;
	p1.calcule(p2); // distance entre p1 et p2
	p1.calcule(o); // distance entre p1 et l'origine(0, 0)
	cout << "deplacement et comparaison" << endl << endl;
	p2.deplacer(20, 13);
	p1.comparer(p2);
	cout << "l'affichage:" << endl << endl;
	o.afficher();
	p1.afficher();
	p2.afficher();
	p3.afficher();
}