Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Пресек на отсечки Problem 2 (1 / 6)
- Да се напише структура која ќе опишува отсечка во дводимензионален простор (две точки). Потоа да се напише функција која ќе проверува дали две отсечки се сечат.
- */
- #include <stdio.h>
- typedef struct tocka {
- float x;
- float y;
- } tocka;
- typedef struct otsecka {
- tocka a;
- tocka b;
- } otsecka;
- typedef struct prava{
- float k;
- tocka t;
- }prava;
- int secat(otsecka o1, otsecka o2) {
- prava p1,p2;
- p1.k=(o1.b.y-o1.a.y)/(o1.b.x-o1.a.x);
- p1.t=o1.a;
- p2.k=(o2.b.y-o2.a.y)/(o2.b.x-o2.a.x);
- p2.t=o2.a;
- if(p1.k==p2.k)
- return 0;
- tocka presek;
- presek.x=(p2.k*p2.t.x-p1.k*p1.t.x+p1.t.y-p2.t.y)/(p2.k-p1.k);
- presek.y=p1.k*(presek.x-p1.t.x)+p1.t.y;
- int secat;
- secat=(((presek.x<=o1.a.x)&&(presek.x>=o1.b.x))||((presek.x>=o1.a.x)&&(presek.x<=o1.b.x)))&&(((presek.x<=o2.a.x)&&(presek.x>=o2.b.x))||((presek.x>=o2.a.x)&&(presek.x<=o2.b.x)));
- return secat;
- }
- int main() {
- float x1, y1, x2, y2;
- scanf("%f %f %f %f", &x1, &y1, &x2, &y2);
- tocka t1 = { x1, y1 };
- tocka t2 = { x2, y2 };
- otsecka o1 = { t1, t2 };
- scanf("%f %f %f %f", &x1, &y1, &x2, &y2);
- tocka t3 = { x1, y1 };
- tocka t4 = { x2, y2 };
- otsecka o2 = { t3, t4 };
- printf("%d\n", secat(o1, o2));
- return 0;
- }
Add Comment
Please, Sign In to add comment