Cod sursa(job #2090352)

Utilizator Consti.001FMI Dranca Constantin Consti.001 Data 17 decembrie 2017 22:30:45
Problema A+B Scor 0
Compilator cpp Status done
Runda Lista lui wefgef Marime 1.81 kb
#include<fstream>
#include<iostream>
#include<cmath>
#define PI 3.14159265
using namespace std;
ifstream f("data.in");
ofstream g("data.out");

struct punct
{
    double x,y;
};

struct vectorr
{
    double i,j;
};

vectorr determina_vector(punct a, punct b)
{
    vectorr X;
    X.i=b.x-a.x;
    X.j=b.y-a.y;
    return X;
}

double modul_vector(punct a, punct b)
{
    return sqrt((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y));
}

double produs_scalar(vectorr a, vectorr b)
{
    double A,B;
    A=a.i*b.i;
    B=a.j*b.j;
    return A+B;
}

int main()
{
  punct A,B,C,D;
  f>>A.x>>A.y>>B.x>>B.y>>C.x>>C.y>>D.x>>D.y;
    double cosB,cosD;
    double unghi_B, unghi_D;

    double prod_scal_1=produs_scalar(determina_vector(B,A),determina_vector(B,C));
    double prod_scal_2=produs_scalar(determina_vector(D,A),determina_vector(D,C));

    double produs_module1=modul_vector(B,A)*modul_vector(B,C);
    double produs_module2=modul_vector(D,A)*modul_vector(D,C);

    cosB=prod_scal_1/produs_module1;
    cosD=prod_scal_2/produs_module2;

   unghi_B=acos(cosB);
   unghi_D=acos(cosD);
    cout<<cosB<<" "<<cosD<<"\n";
    if(abs(unghi_B+unghi_D-PI)<0.01)
    {
        cout<<"Punctul D apartine  cercului circumscris\n";
    }
    else
    if (unghi_B+unghi_D>PI)
    {
        cout<<"Punctul D se afla in interiorul cercului circumscris\n";
    }
    else
    cout<<"Punctul D se afla in exteriorul cercului circumscris\n";

///Cerinta b

    double AB,CD,AD,BC;
    AB=modul_vector(A,B); g<<AB<<"\n";
    CD=modul_vector(C,D); g<<CD<<"\n";
    AD=modul_vector(A,D); g<<AD<<"\n";
    BC=modul_vector(B,C); g<<BC<<"\n";
    if(((AB+CD)-(AD+BC))<0.01)
    cout<<"Patrulaterul este circumscriptibil";
    else
    cout<<"Patrulaterul nu este circumscriptibil";

    return 0;
}