créer une classe Triangle et essayer de la valider dans un projet tesTriangle; la classe en question basée
principalement sur la classe point comporte les membres suivants:
six attributs privés, trois de type Point (exemple P1,P2,P3) désignant les sommets du triangle et trois de type double
pour évaluer les distances (exemple L1,L2,L3).
un constructeur Triangle() pour définir systématiquement les objets Triangle; un objet Triangle est défini par les trois
points des sommets et les distances entre eux.
une méthode typée (doubel) calPerimetre() retournant le périmètre du triangle.
une méthode typée (string) isocEl() retournant le type du triangle "isocel" ou "non isocel";
une méthode typée (doubel) getL1() pour dégager la distance entre P1 et P2.
une méthode typée (doubel) getL3()pour dégager la distance entre P3 et P1.
Nb: essayer de créer les objets P1,P2,P3 différemment (vous avez trois constructeurs de la classe Point)
un triangle est isocel si L1=L2=L3.
Solution proposée:
#endif // TRIANGLE_H
/****************************le fichier triangel.cpp*******************************/
#include <iostream>
#include <cmath>
#include "point.h"
#include "triangle.h"
using namespace std;
Triangle::Triangle()
{
//Point P1(1,1),P2(2),P3(); // une manière de création des objets
P1=Point(1,1); P2=Point(2); P3=Point(); // essayer de saisir les coordonnés x et y par clavier (en utilisant cout et cin
L1=P1.diStance(P2); L2=P2.diStance(P3); L3=P3.diStance(P1);
}
double Triangle::calPerimetre()
{
return L1+L2+L3;
}
double Triangle::getL1(){ return L1;}
double Triangle::getL2(){ return L2;}
double Triangle::getL3(){ return L3;}
string Triangle::isocEl()
{
if (L1==L2 && L2==L3) return "isocel";
else return "nonisocel";
}
Triangle::~Triangle(){ /*destructeur*/}
#ifndef POINT_H
#define POINT_H
class Point
{
public:
Point(); Point(double); Point(double,double);
double getX(); double getY();
void setX(double); void setY(double);
void depLace(double,double);
void afficHe(Point);
double diStance(Point autrPoint);
double diStance(Point pi, Point pf);
double moDule();
virtual ~Point();
protected:
private:
double x,y;
};
/***************************************le fichier point.cpp********************************/
#include <iostream>
#include <cmath>
#include "point.h"
using namespace std;
Point::Point(){ x=0;y=0; }
Point::Point(double a){ x=a;y=0; }
Point::Point(double a,double b){ x=a;y=b; }
double Point::getX(){ return x;}
double Point::getY(){ return y;}
void Point::setX(double a){x=a;}
void Point::setY(double b){x=b;}
void Point::depLace(double dx,double dy){ x=x+dx; y=y+dy;}
void Point::afficHe(Point p1)
{
cout<<"p1(x,y)= ("<<p1.x<<","<<p1.y<<")"<<endl;
}
double Point::diStance(Point autrPoint)
{
double dx=this->x-autrPoint.x; ;
double dy=this->y-autrPoint.y;
return sqrt(dx*dx+dy*dy);
}
double Point::diStance(Point pi, Point pf)
{
double dx=pf.x-pi.x; double dy=pf.y-pi.y;
return sqrt(dx*dx+dy*dy);
}
Point::~Point(){/*destructeur*/ }
return 0; }