본문 바로가기

C_study

[C] 코딩도장 65 : 함수에서 구조체 매개변수 사용하기

65.6 심사문제: 두 점 사이의 거리를 구하는 함수 만들기

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

struct Point2D {
    int x;
    int y;
};

double getDistance(struct Point2D p1, struct Point2D p2) // 각 구조체 변수를 매개변수로 받습니다
{
    
    double distance = sqrt(((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)));
    return distance;

} 
int main()
{
    struct Point2D p1;
    struct Point2D p2;

    scanf("%d %d %d %d", &p1.x, &p1.y, &p2.x, &p2.y);

    printf("%f\n", getDistance(p1, p2));

    return 0;
}

65.7 심사문제: 좌표를 이동시키는 함수 만들기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct Point2D {
    int x;
    int y;
};
 
void movePoint2D(struct Point2D *p, int x, int y) //p1의 메모리 주소를 입력받으므로 구조체 포인터를 매개변수로 사용합니다
{
    p->x += x; // p는 구조체 포인터이므로 화살표 연산자를 사용하고 각 좌표마다 입력받은 값 만큼 더해줍니다
    p->y += y;
}

int main()
{
    struct Point2D p1;
    int offsetX, offsetY;
 
    scanf("%d %d %d %d", &p1.x, &p1.y, &offsetX, &offsetY);

    movePoint2D(&p1, offsetX, offsetY);

    printf("%d %d\n", p1.x, p1.y);

    return 0;
}