Rozwiązane

Dane są współrzędne trzech punktów na płaszczyźnie. Należy określić, czy punkty te leżą na jednej prostej.

więcej

Dane wejściowe to 3 wiersze zawierające po 2 liczby całkowite rozdzielone znakiem odstępu (spacją) będące współrzędnymi x i y trzech punktów.

Napisz program, który wypisze na standardowe wyjście słowo TAK lub NIE, w zależności od tego, czy podane punkty leżą na jednej prostej czy nie. Ponadto, w drugim wierszy należy wypisać trzy odległości pomiędzy podanymi punktami w kolejności rosnącej (z dokładnością do drugiego miejsca po przecinku).



Odpowiedź :

Podaję program w c++


#include<iostream>
#include<cstdio>
#include<math.h>
#include<iomanip>

using namespace std;
main()
{
float xa,ya,xb,yb,xc,yc;

//wczytujemy wspolrzedne punktow

cin>>xa>>ya;
cin>>xb>>yb;
cin>>xc>>yc;

//sprawdzenie warunku
if(xa * (yb - yc) + xb * (yc - ya) + xc * (ya - yb) ==0)
cout<<"TAK"<<endl;
else cout<<"NIE"<<endl;

//liczymy odleglosci

float o_ab,o_ac,o_bc;

o_ab = sqrt((xb-xa)*(xb-xa) + (yb - ya) * (yb - ya));
o_ac = sqrt((xc-xa)*(xc-xa) + (yc - ya) * (yc - ya));
o_bc = sqrt((xb-xc)*(xb-xc) + (yb - yc) * (yb - yc));

if((o_ab >= o_ac) && (o_ab >= o_bc))
{
if(o_ac > o_bc)
{
cout<<setprecision(2)<<o_ab<<" "<<o_ac<<" "<<o_bc<<endl;
}
else
{
cout<<setprecision(2)<<o_ab<<" "<<o_bc<<" "<<o_ac<<endl;
}
}


else if((o_ac >= o_ab) && (o_ac >= o_bc))
{
if(o_ab > o_bc)
{
cout<<setprecision(2)<<o_ac<<" "<<o_ab<<" "<<o_bc<<endl;
}
else
{
cout<<setprecision(2)<<o_ac<<" "<<o_bc<<" "<<o_ab<<endl;
}
}

else
{
if(o_ac > o_ab)
{
cout<<setprecision(2)<<o_bc<<" "<<o_ac<<" "<<o_ab<<endl;
}
else
{
cout<<setprecision(2)<<o_bc<<" "<<o_ab<<" "<<o_ac<<endl;
}
}


return 0;
}