Sunteți pe pagina 1din 4

PROIECT OOP

Morariu Dragos-Ilie
30. S se scrie un proiect, care folosind clase, implementeaz
urmtoarele operaii pe un triunghi: citire coordonate vrfuri, calcul
dimensiune laturi, calcul perimetru, aflarea tipului
triunghiului(echilateral, isoscel, dreptunghic sau oarecare), calcul arie i
calculul nlimilor.

Triunghi.h

#include <iostream>
#include "stdafx.h"
#include <math.h>
using namespace std;
class coordonate {
public:
double c1;
double c2;
public:
coordonate(double x, double y){
c1=x;
c2=y;
}
coordonate(){}



};
class triunghi {
public:
coordonate x;
coordonate y;
coordonate z;
double ab;
double bc;
double ca;
public:
triunghi(){}
triunghi(coordonate a, coordonate b, coordonate c){
x = a;
y = b;
z = c;
dimensiune_laturi();
}
double perimetru();
void tip_triunghi();
double aria_triunghiului();
void intaltimi();
void dimensiune_laturi();
friend ostream & operator<<(ostream&, triunghi);
friend istream & operator>>(istream&, triunghi&);


};


#include "stdafx.h"
#include "triunghi.h"




ostream & operator<<(ostream &stream,triunghi n)
{
stream << "Triunghiul are coordonatele:\n";
stream << "\tA(" << n.x.c1 << "," << n.x.c2 << ")" << "\n";
stream << "\tB(" << n.y.c1 << "," << n.y.c2 << ")" << "\n";
stream << "\tC(" << n.z.c1 << "," << n.z.c2 << ")" << "\n";
stream << "Triunghiul are laturile:\n";
stream << "\tAB=" << n.ab << "\n";
stream << "\tBC=" << n.bc << "\n";
stream << "\tAC=" << n.ca << "\n";
return stream;
}

void triunghi::dimensiune_laturi(){

ab = sqrt(pow(y.c1 - x.c1, 2.0) + pow(y.c2 - x.c2, 2.0));

bc = sqrt(pow(z.c1 - y.c1, 2) + pow(z.c2 - y.c2, 2));

ca = sqrt(pow(x.c1 - z.c1, 2) + pow(x.c2 - z.c2, 2));
}

istream & operator>>(istream &stream,triunghi &n)
{
cout << "Dati prima coordonata a primului punct: ";
stream >> n.x.c1;
cout << "Dati a doua coordonata a primului punct coordonata: ";
stream >> n.x.c2;
cout << "Dati prima coordonata a celui de-al doilea punct: ";
stream >> n.y.c1;
cout << "Dati a doua coordonata a celui de-al doilea punct : ";
stream >> n.y.c2;
cout << "Dati prima coordonata a celui de-al treilea punct: ";
stream >> n.z.c1;
cout << "Dati a doua coordonata a celui de-al treilea punct : ";
stream >> n.z.c2;
n.dimensiune_laturi();
return stream;
}




double triunghi::perimetru(){

return ab + bc + ca;

}

void triunghi::tip_triunghi(){



if ((ab != bc) && (ab != ca) && (bc != ca))
cout << "triunghiul este oarecare" << endl;
if (ab == bc == ca) cout << "triunghiul este echilateral"<<"\n";
if (((ab == bc) && (ab != ca) && (bc != ca)) || ((ab == ca) && (ab
!= bc) && (bc != ca)) || ((bc == ca) && (ab != ca) && (bc != ab)))
cout << "triunghiul este isoscel" << endl;

if ((ab > bc) && (ab > ca) && (ab=sqrt(ca*ca+bc*bc)))
cout << "triunghiul este dreptunghic" << endl;

if ((bc > ab) && (bc > ca) && (bc = sqrt(ab*ab + ca*ca)))
cout << "triunghiul este dreptunghic" << endl;

if ((ca > bc) && (ca > ab) && (ca=sqrt(ab*ab+bc*bc)))
cout << "triunghiul este dreptunghic" << endl;

}

double triunghi::aria_triunghiului(){
double p; // unde p este semiperimetru


p = (ab + bc + ca) / 2;

return sqrt(p*(p - ab)*(p - bc)*(p - ca)); //formula lui heron

}
void triunghi::intaltimi() {
double aria = aria_triunghiului();
cout << "inaltimea din A pe BC este=" << (2 * aria) / bc << endl;
cout << "inaltimea din B pe CA este=" << (2 * aria) / ca << endl;
cout << "inaltimea din C pe AB este=" << (2 * aria) / ab << endl;






}







void main(){


triunghi d;
cin >> d;
system("cls");
cout << d;
d.tip_triunghi();
cout << "\n" <<"Perimetrul este egal cu="<< d.perimetru();
cout<<"\n" <<"Aria este egala cu="<< d.aria_triunghiului() << "\n";
d.intaltimi();




system("pause");

}

S-ar putea să vă placă și