[2025.03.13] Ch.07_C의 제어몬: 분기와 점프_자판기 만들기

2025. 3. 13. 19:58·C/본수업
목차
  1. [코드]
  2. [출력결과]

[코드]

// 2025.03.13. (목)

// 자판기, 메뉴 5가지
// 콜라 / 사이다 / 이온음료 / 주스 / 물
// 800 / 700 / 600 / 600 / 500
// 돈 넣음 -> 얼마 넣었는지 보여줌.
// 10원보다 적게 넣으면 메뉴선택 / 많으면 추가 돈 입력
// 10, 50, 100, 500, 1000, 5000, 10000, 50000원 만 받음.
// ex) 117원 들어오면 거부
// 정상적인 돈 들어오면, 그 메뉴 뽑아주는데, 몇개 고를건지도 물어봐야함.
// 더 구매할건지 물어보고, no라고 하면 잔돈 받아, yes라고 하면 다시 메뉴고름.
#include <stdio.h>

int main()
{
    int input, user_menu, num_menu;
    int total_money = 0; // 사용자의 총 소지금
    char user_select; // 더 구매할건지에 대한 유저 선택 (y/n)
    
    while (1)
    {
        printf("\n=================================\n");
        printf("|\t현재 소지금 : %d원\t|\n", total_money);
        printf("============ < MENU > ===========\n1. 콜라\t\t(800원)\n2. 사이다\t(700원)\n3. 이온음료\t(600원)\n4. 주스\t\t(600원)\n5. 물\t\t(500원)\n\n");
        printf("숫자를 입력해주세요 : ");
        scanf("%d", &input); // 메뉴 or 금액 입력
        if (0 < input && input < 6) // 메뉴선택 (input이 1~5인 경우)
        {
            user_menu = input; // 용어가 헷갈리니까 user_menu로 바꿔줌.

            printf("몇 개 사실건가요? : ");
            scanf("%d", &num_menu); // 몇개 구매할건지 입력
            
            printf("\n┌────────── 주문서 ──────────┐\n");
            printf("│\t메뉴 : %d번\t     │\n", user_menu);
            printf("│\t개수 : %d개\t     │\n", num_menu);
            printf("│\t니돈 : %d원\t     │\n", total_money);
            printf("└────────────────────────────┘\n");

            // 금액이 부족한 경우 처리
            if (user_menu == 1 && total_money < 800*num_menu)
            {
                printf("총 구매 금액은 %d원 입니다. %d원이 부족합니다. 돈을 더 넣어주세요.\n\n", 800*num_menu, (total_money-800*num_menu)*(-1));
                continue;
            }
            else if (user_menu == 2 && total_money < 700*num_menu)
            {
                printf("총 구매 금액은 %d원 입니다. %d원이 부족합니다. 돈을 더 넣어주세요.\n\n", 700*num_menu, (total_money-700*num_menu)*(-1));
                continue;
            }
            else if (user_menu == 3 && total_money < 600*num_menu)
            {
                printf("총 구매 금액은 %d원 입니다. %d원이 부족합니다. 돈을 더 넣어주세요.\n\n", 600*num_menu, (total_money-600*num_menu)*(-1));
                continue;
            }
            else if (user_menu == 4 && total_money < 600*num_menu)
            {
                printf("총 구매 금액은 %d원 입니다. %d원이 부족합니다. 돈을 더 넣어주세요.\n\n", 600*num_menu, (total_money-600*num_menu)*(-1));
                continue;
            }
            else if (user_menu == 5 && total_money < 500*num_menu)
            {
                printf("총 구매 금액은 %d원 입니다. %d원이 부족합니다. 돈을 더 넣어주세요.\n\n", 500*num_menu, (total_money-500*num_menu)*(-1));
                continue;
            }

            // 선택한 메뉴와 갯수에 따른 총 금액이 충종될 때 처리
            if (user_menu == 1 && total_money >= 800*num_menu)
            {
                printf("총 구매금액 : %d원\n", 800*num_menu);
                total_money -= 800*num_menu;
                printf("현재 소지금 : %d원\n", total_money);
                printf("더 구매하실 건가요? [ 1. Yes | 2. No ] : ");
                getchar(); // 구매하고 나서 더 구매할건지 물어보고 scanf로 입력받기 전에 getchar()로 버퍼 비워주기
                scanf("%c", &user_select);
                if (user_select == 'y') // y를 입력하면 continue를 통해 메뉴판으로 돌아감
                {
                    continue;
                }
                else if (user_select == 'n') // n을 입력하면 잔돈을 출력해줌. (아직 종료 조건을 안만들어서 결국 그냥 맨 처음으로 돌아감 while문으로)
                {
                    printf("잔돈 : %d원\n\n", total_money);
                }
            }
            else if (user_menu == 2 && total_money >= 700*num_menu)
            {
                printf("총 구매금액 : %d원\n", 700*num_menu);
                total_money -= 700*num_menu;
                printf("현재 소지금 : %d원\n", total_money);
                printf("더 구매하실 건가요? [ y | n ] : ");
                getchar();
                scanf("%c", &user_select);
                if (user_select == 'y')
                {
                    continue;
                }
                else if (user_select == 'n')
                {
                    printf("잔돈 : %d원\n\n", total_money);
                }
            }
            else if (user_menu == 3 && total_money >= 600*num_menu)
            {
                printf("총 구매금액 : %d원\n", 600*num_menu);
                total_money -= 600*num_menu;
                printf("현재 소지금 : %d원\n", total_money);
                printf("더 구매하실 건가요? [ y | n ] : ");
                getchar();
                scanf("%c", &user_select);
                if (user_select == 'y')
                {
                    continue;
                }
                else if (user_select == 'n')
                {
                    printf("잔돈 : %d원\n\n", total_money);
                }
            }
            else if (user_menu == 4 && total_money >= 600*num_menu)
            {
                printf("총 구매금액 : %d원\n", 600*num_menu);
                total_money -= 600*num_menu;
                printf("현재 소지금 : %d원\n", total_money);
                printf("더 구매하실 건가요? [ y | n ] : ");
                getchar();
                scanf("%c", &user_select);
                if (user_select == 'y')
                {
                    continue;
                }
                else if (user_select == 'n')
                {
                    printf("잔돈 : %d원\n\n", total_money);
                }
            }
            else if (user_menu == 5 && total_money >= 500*num_menu)
            {
                printf("총 구매금액 : %d원\n", 500*num_menu);
                total_money -= 500*num_menu;
                printf("현재 소지금 : %d원\n", total_money);
                printf("더 구매하실 건가요? [ y | n ] : ");
                getchar();
                scanf("%c", &user_select);
                if (user_select == 'y')
                {
                    continue;
                }
                else if (user_select == 'n')
                {
                    printf("잔돈 : %d원\n\n", total_money);
                }
            }
            else // 소지한 금액이 구매금액보다 적은 경우 처리
            {
                printf("금액이 부족합니다.\n");
                printf("잔돈 : %d원\n\n", total_money);
            }
        }
        else if (input % 10 != 0 || input == 0) // 입력한 숫자가 10원 단위로 떨어지지 않거나, 0을 입력한 경우 continue 사용하여 다시 입력받도록 함.
        {
            printf("잘못된 숫자입니다. 숫자를 다시 입력해주세요.\n");
            continue;
        }
        else if (input >= 10)  // input이 10 이상이면 돈으로 인식하여 total_money에 input을 더해줌. continue 사용하여 다시 숫자 입력으로 돌아감.
        {
            total_money += input;
            continue;
        }
    }
    return 0;
}

 

 

 

 

[출력결과]

 

'C > 본수업' 카테고리의 다른 글

[2025.03.14] Ch.09_함수_자판기 만들기 함수화 (동영상 포함)  (0) 2025.03.14
[2025.03.14] Ch.08_문자 입출력과 입력 유효성 검사  (0) 2025.03.14
[2025.03.12] Ch.06_C의 제어문: 루프_별찍기  (0) 2025.03.12
[2025.03.12] Ch.06_C의 제어문: 루프_연습문제  (0) 2025.03.12
[2025.03.12] Ch.06_C의 제어문: 루프  (0) 2025.03.12
  1. [코드]
  2. [출력결과]
'C/본수업' 카테고리의 다른 글
  • [2025.03.14] Ch.09_함수_자판기 만들기 함수화 (동영상 포함)
  • [2025.03.14] Ch.08_문자 입출력과 입력 유효성 검사
  • [2025.03.12] Ch.06_C의 제어문: 루프_별찍기
  • [2025.03.12] Ch.06_C의 제어문: 루프_연습문제
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
Polibo와 개발 콩나무 키우기Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
        • 팀프로젝트02 - 퐘퐘이 (0)
        • 팀프로젝트03 - 개발의 민족 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    반복문
    파이썬 숫자야구
    c언어 scanf
    Python
    문자열
    while문
    C
    if문
    파이썬예제
    파이썬반복문
    순서도
    for문
    파이썬게임
    파이썬조건문
    조건문
    코딩
    c언어
    파이썬
    c우선순위
    else if
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.13] Ch.07_C의 제어몬: 분기와 점프_자판기 만들기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.