範例程式碼 uva378

//uva378
#include <stdio.h>

struct Point {
    int x, y;
};

struct Segment {
    Point s, e;
};

void solve(Segment a, Segment b) {
    int a1, b1, c1, a2, b2, c2;
    int D, Dx, Dy;
    a1 = a.s.y - a.e.y, b1 = -a.s.x + a.e.x;
    a2 = b.s.y - b.e.y, b2 = -b.s.x + b.e.x;
    c1 = a1 * a.s.x + b1 * a.s.y;
    c2 = a2 * b.s.x + b2 * b.s.y;
    D = a1 * b2 - a2 * b1;
    Dx = c1 * b2 - c2 * b1;
    Dy = a1 * c2 - a2 * c1;
    if(!D && (Dx || Dy))
        puts("NONE");
    else if(!D && !Dx && !Dy)
        puts("LINE");
    else
        printf("POINT %.2lf %.2lf\n", (double)Dx / D, (double)Dy / D);
}

int main() {
    int t;
    scanf("%d", &t);
    puts("INTERSECTING LINES OUTPUT");
    while(t--) {
        Segment a, b;
        scanf("%d %d %d %d", &a.s.x, &a.s.y, &a.e.x, &a.e.y);
        scanf("%d %d %d %d", &b.s.x, &b.s.y, &b.e.x, &b.e.y);
        solve(a, b);
    }
    puts("END OF OUTPUT");
    return 0;
}