Informatică, întrebare adresată de Nica22, 8 ani în urmă

DAU 50 PUNCTE!!! Un triunghi este definit prin coordonatele varfurilor sale. Scrieti functii care, pentru doua triunghiuri date, sa studieze daca:
a)au aceeasi arie;
b)sunt asemenea;
c)primul este in interiorul celui de-al doilea.


boiustef: structuri de date?
boiustef: a ramas punctul c.... poate termin maine...

Răspunsuri la întrebare

Răspuns de boiustef
3

Răspuns:

#include <iostream>

#include <math.h>

using namespace std;

struct Punct{

double x,y;

};

struct Triunghi{

Punct M,N,P;

};

Triunghi T1,T2;

double Dist(Punct M, Punct N)

{

   double MN=sqrt(pow(M.x-N.x,2)+pow(M.y-N.y,2));

   return MN;

}

bool Asemenea(Triunghi T1, Triunghi T2)

{

   double a1=Dist(T1.M,T1.N);

   double b1=Dist(T1.M,T1.P);

   double c1=Dist(T1.N,T1.P);

   double a2=Dist(T2.M,T2.N);

   double b2=Dist(T2.M,T2.P);

   double c2=Dist(T2.N,T2.P);

   bool e=(a1/a2==b1/b2 && a1/a2==c1/c2)||

   (a1/b2==b1/c2 && a1/b2==c1/a2)||

   (a1/c2==b1/a2 && a1/c2==c1/b2);

   return e;

}

double Aria(Punct A, Punct B, Punct C)

{

   double AB, AC, BC;

   AB=Dist(A,B);

   AC=Dist(A,C);

   BC=Dist(B,C);

   double p=(AB+BC+AC)/2;

   double r=sqrt(p*(p-AB)*(p-AC)*(p-BC));

   return r;

}

bool Interior(Punct A, Triunghi T2)

{

   bool inter;

   double e=Aria(T2.M,T2.N,T2.P)-(Aria(A,T2.N,T2.P)+Aria(T2.M,A,T2.P)+Aria(T2.M,T2.N,A));

   if (e<0) e*=-1;

   inter=(e<0.000001);

   return inter;

}

int main()

{

   cout << "Dati coordonatele varfurilor primului triunghi: \n";

   cin >> T1.M.x >> T1.M.y;

   cin >> T1.N.x >> T1.N.y;

   cin >> T1.P.x >> T1.P.y;

   cout << "Dati coordonatele varfurilor triunghiului 2: \n";

   cin >> T2.M.x >> T2.M.y;

   cin >> T2.N.x >> T2.N.y;

   cin >> T2.P.x >> T2.P.y;

   if (Aria(T1.M,T1.N,T1.P)==Aria(T2.M,T2.N,T2.P))

       cout << "au arii egale";

   else cout << "nu au arii egale";

   cout << endl;

   if (Asemenea(T1,T2))

       cout << "sunt asemenea";

   else cout << "nu-s asemenea";

   cout << endl;

   if (Interior(T1.M,T2) && Interior(T1.N,T2) && Interior(T1.P,T2))

       cout << "T1 este in interior la T2";

   else cout << "T1 nu este in interior la T2";

   cout << endl;

   return 0;

}

Explicație:

Alte întrebări interesante