13주차 실습 문제(1)

스크린샷 2024-11-28 오후 4.29.40.png

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

struct POINT {
    double x;
    double y;
} emp1, emp2;

int main()
{
    //변수 선언
   double distance;

    //시작점 좌표 입력
    printf("시작점 좌표를 입력하세요: ");
   scanf("%lf %lf", &emp1.x, &emp1.y);

   //끝점 좌표 입력
    printf("끝점 좌표를 입력하세요: ");
   scanf("%lf %lf", &emp2.x, &emp2.y);
  
   //거리 계산
    distance = sqrt(pow(emp2.x - emp1.x, 2) + pow(emp2.y - emp1.y, 2));

    // 거리 출력 (수정하지 마세요)
   printf("두 점 사이의 거리: %.2lf", distance);
 
  return 0;
}
// 끝점 좌표 입력
    printf("끝점 좌표를 입력하세요: ");
    scanf("%lf %lf", &emp2.x, &emp2.y);
// 거리 계산
    distance = sqrt(pow(emp2.x - emp1.x, 2) + pow(emp2.y - emp1.y, 2));

13주차 실습 문제(2)

스크린샷 2024-11-28 오후 8.53.21.png

#include <stdio.h>
#include <string.h>

// 구조체 정의
typedef struct {
    char color[20]; // 색상
    int price;      // 가격
    int stock;      // 재고
} PRODUCT;

void print_product(const PRODUCT *p)
{
    printf("[%s %d원 재고:%d]", p->color, p->price, p->stock); // 구조체 멤버 출력
}

int main(void)
{
    PRODUCT prd1;

    // 색상 입력
    printf("색상을 입력하세요: ");
    scanf("%s", prd1.color); // 문자열 입력

    // 가격 입력
    printf("가격을 입력하세요: ");
    scanf("%d", &prd1.price); // 정수 입력

    // 재고 입력
    printf("재고 갯수를 입력하세요: ");
    scanf("%d", &prd1.stock); // 정수 입력

    // 출력
    print_product(&prd1); // 구조체 포인터 전달
    return 0;
}


13주차 실습 문제(3)

스크린샷 2024-11-28 오후 10.09.57.png

스크린샷 2024-11-28 오후 10.10.09.png

#include <stdio.h>
#include <string.h>

#define MAX_PRODUCT 5

// PRODUCT 구조체 선언
typedef struct {
    char color[20];  // 색상
    int price;       // 가격
    int stock;       // 재고
} PRODUCT;

void print_product(const PRODUCT *p)
{
    printf("[%s 재고:%d]\\n", p->color, p->stock); // 구조체 멤버 출력
}

int order(PRODUCT *p, int amount)
{
    if (p->stock < amount) // 재고가 부족한 경우
        return 0;
    p->stock -= amount;     // 재고 차감
    return p->price * amount; // 결제 금액 반환
}

PRODUCT *find_product(PRODUCT *arr, int cnt, const char* prd_color)
{
    int i;
    for (i = 0; i < cnt; i++)
        if (strcmp(arr[i].color, prd_color) == 0)
            return &arr[i];
    return NULL;
}

int main(void)
{
    PRODUCT products[MAX_PRODUCT] = {
        {"white", 4000, 15}, {"yellow", 4500, 20}, {"black", 5000, 5}
    };
    int cnt_products = 3;
    int i;

    while (1)
    {
        char prd_color[20];
        PRODUCT *p = NULL;
        int amount = 0;
        int payment = 0;

        // 각 색상에 대한 가격과 재고 출력
        for (i = 0; i < cnt_products; i++)
        {
            print_product(&products[i]);
        }

        // 색상 입력
        printf("\\n주문할 제품의 색상을 입력하세요: ");
        scanf("%s", prd_color);

        // exit 입력하면 while문 종료
        if (strcmp(prd_color, "exit") == 0)
            break;

        // 제품이 있는지 확인: find_product 함수 이용
        p = find_product(products, cnt_products, prd_color);
        if (p == NULL)
        {
            printf("제품을 찾을 수 없습니다.\\n");
            continue;
        }
			
		// 주문 수량 입력
        printf("주문 수량을 입력하세요: ");
        scanf("%d", &amount);
				
		// 잔액 계산: order 함수 이용
        payment = order(p, amount);
        if (payment == 0)
        {
            printf("재고 부족! 주문 불가!\\n");
        }
        else
        {
            printf("결제 금액: %d, ", payment);
        }
        printf("색상: %s, 재고: %d\\n", p->color, p->stock);
    }

	// 각 색상에 대한 가격과 재고 출력
    for (i = 0; i < cnt_products; i++)
    {
        print_product(&products[i]);
    }

    return 0;
}