Witam napisałem program który czy dwa dane odcinki na płaszczyźnie przecinają się. Wydaje mi się że popełniłem w nim kilka błędów oraz coś mi brakuje. Proszę o pomoc szybką.
```#include<iostream>
//#include<cstdio>
#include<cstdlib>
#include <cmath>
using namespace std;
doub iloczyn(x1,y1,x2,y2,x3,y3)
{
return (x2 - x1)(y3 - y1) - (x3 - x1)(y2 - y1); //zwracamy iloczyn skalarny wektorow (p2-p1) i (p3-p1)
}
bool lezy_miedzy(x1,x2,x3)
{
if min{x1,x2} =< x_3 =< max{x1,x2}
return true; //zakladamy, ze p1,p2 i p3 sa wspoliniowe
else
return false;
}
//Wtedy mozemy zdefiniowac funkcj?:
bool przecinaja_sie(punkt x1,y1,x2,y2,x3,y3,x4,y4)
{ //rozwazamy odcinki (p1,p2) i (p3,p4)
S_1 = iloczyn(x3,y3,x4,y4,x1,y1);
S_2 = iloczyn(x3,y3,x4,y4,x2,y2);
S_3 = iloczyn(x1,y1,x2,y2,x3,y3);
S_4 = iloczyn(x1,y1,x2,y2,x4,y4);
if ((S_1 > 0 && S_2 < 0) || (S_1 < 0 i S_2 > 0)) && ((S_3 < 0 i S_4 > 0) || (S_3 > 0 i S_4 < 0))
return true;
else if S_1 == 0 && lezy_miedzy(x3, x4, x1)
return true;
else if S_2 == 0 && lezy_miedzy(x3, x4, x2)
return true;
else if S_3 == 0 && lezy_miedzy(x1, x2, x3)
return true;
else if S_4 == 0 && lezy_miedzy(x1, x2, x4)
return true;
else
return false;
}
int main()
{
cout<<"Sprawdzanie czy 2 odcinki o podanych koncach PRZECINAJA SIE?"<<endl;
cout<<"Podaj liczbe wsporzedne punktu A xA: "; cin>>xa;
cout<<"yA:"; cin>>ya;
if (n<0) l=false;
else p=oblicz(n,E);
if (l) cout<<"Pierwiastek kwadratowy z liczby "<<n<<" = "<<p<<endl;
else cout<<"Liczba ujemna nie ma pierwiastka kwadratowego w zbiorze liczb rzeczywistych";
return 0;
}
}