Program c++ , w codeblocks

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

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).

Przykładowe dane:
1 2
3 3
5 2

Wynik:
NIE
2.24 2.24 4.00

zaczynać tak:
__________________________________________________________
#include <cstdio>

int main()
{
................
.............
..........

1

Odpowiedzi

Najlepsza Odpowiedź!
2009-11-11T11:59:36+01:00
// Created by Rangoo - www.keepcomp.pl ;)
int x1,x2,x3,y1,y2,y3; // Można na tablicach ostatecznie (int x[2], y[2])
int p1,p2,p3; // Zmienne odległości
int i = 0, z; // Zmienne pomocnicze
// Wszystkie int można połączyć i usunąć komentarze
cin >> x1, y1;
cin >> x2, y2;
cin >> x3, y3;
// Ustalenie odległości
p1 = sqrt((x2-x1)^2+(y2-y1)^2);
p2 = sqrt((x3-x2)^2+(y3-y2)^2);
p3 = sqrt((x1-x3)^2+(y3-y2)^2);
// Sortowanie bąbelkowe
while(i < 2) {
if(x3>x2) {
z = x2;
x2 = x3;
x3 = z;
}
if(x2>x1) {
z = x1;
x1 = x2;
x2 = z;
}
i++;
}
// Sprawdzenie czy są na tej samej prostej...
if(p1 == p2 + p3) {
//...i wypisanie
cout << "TAK" << endl << p3 << " " << p2 << " " << p1 << endl;
}
1 2 1