without haste but without rest

[C / 자료구조] 2주차 과제 - ADT 구현, 사각형 문제 본문

Homework

[C / 자료구조] 2주차 과제 - ADT 구현, 사각형 문제

JinungKim 2020. 4. 4. 16:30

ADT 구현, 사각형 문제

#include <stdio.h>
#include <math.h>

typedef struct _coordinates {
    int x;
    int y;
} Point;

void input(Point *p);
void output(Point p);
double distance(Point pt1, Point pt2);
int area(Point pt1, Point pt2);
int equals(Point pt1, Point pt2);
void move(Point* pt1, Point vec);


int test() {
    Point p1, p2, vec;
    printf(">>");
    input(&p1); 
    printf(">>");
    input(&p2);
    if (equals(p1, p2)) {
        printf("두 점이 같습니다.");
        return 0;
    }
    printf("두 점의 거리: %.3f\n", distance(p1, p2));
    printf("두 점에 의한 네모의 면적: %d\n", area(p1, p2));
    
    printf("이동할 거리: ");
    input(&vec);
    printf("p1 이동: ");
    output(p1);
    printf(" -> ");
    move(&p1, vec); output(p1);

    printf("\np2 이동: ");
    output(p2);
    printf(" -> ");
    move(&p2, vec); output(p2);
}

void main() {
    while (1) {
        test();
        printf("\n");
    }
}

void input(Point *pt) {
    int x, y;
    scanf_s("%d %d", &x, &y);
    pt->x = x;
    pt->y = y;
}

void output(Point pt) {
    printf("(%d, %d)", pt.x, pt.y);
}

double distance(Point pt1, Point pt2) {
    double res = sqrt(
        pow((pt1.x - pt2.x), 2) + pow((pt1.y - pt2.y), 2));
    return res;
}

int area(Point pt1, Point pt2) {
    int res = abs(pt1.x - pt2.x) * abs(pt1.y - pt2.y);
    return res;
}

int equals(Point pt1, Point pt2) {
    if (pt1.x == pt2.x && pt1.y == pt2.y) {
        return 1;
    }
    return 0;
}

void move(Point* pt, Point vec) {
    pt->x += vec.x;
    pt->y += vec.y;
}

 

Comments