Day 17 [조건문]

2025. 3. 13. 12:16·일지

자판기

 

<교수님 자판기>

 

 

 

<내가 만든 자판기>

// 최최종

// 오후
// 자판기
// 메뉴 5개
// 콜라 사이다 이온음료 주스 물
// 800 700    600  600 500
// 1.돈을 넣는다
// 2.얼마 넣었는지 보여준다
// 3.메뉴 몇개살건지
// 4.다 사고나면 더 살건지 말건지
// 10 이하 = 메뉴선택
// 10 이상 = 금액
// 돈 단위 [10, 50, 100, 500, 1000, 5000, 10000, 50000]
#include <stdio.h>
#include <string.h>
#define menu_size 5

int main()
{
    int money=0; //투입금액

    while (1)
    {
        int price[menu_size] = {800, 700, 600, 600, 500};
        char menu[menu_size][16] = {"콜라", "사이다", "이온음료", "주스", "물"};

        int pick=0; //메뉴
        int count; //몇개

        printf("[menu]\n");
        for (int i = 0; i < menu_size; i++)
        {
            printf("%d.%s(%d) ", i+1, menu[i], price[i]);
        }

        // 1. 숫자 투입 - 메뉴고르면 바로 몇개인지
        int input;
        
        while (1)
        {
            printf("\n| 현재 잔액:%d원 | 메뉴선정:(1~5) | 금액투입:(10원 단위) |\n",money);
            printf("숫자를 입력하세요: ");
            scanf("%d", &input);
            
            // 1.잔액 저장 
            if ((input>9) && (input%10==0)) // 10 단위
            {
                money += input;
            }

            // 2.메뉴 선택 > 몇개 살건지 
            else if (input<10) // 1~9
            {
                printf("메뉴%d번을 선택하셨습니다.\n", input);
                printf("몇개를 구매하시겠습니까?: ");
                scanf("%d", &count);
                

                int need_money = (count * price[input-1]); //총액

                if (need_money < money) // 총액이 잔액보다 작아야 결제 가능
                {
                    printf("%s(이)가 %d개 나왔습니다.\n", menu[input-1], count);
                    printf("잔돈은 %d원 입니다.\n", money-need_money);
                    money = money - need_money;

                    char answer; // 더 구매할건지?(y/n)
                    printf("더 구매하시겠습니까?(y/n): ");
                    getchar();
                    scanf("%c", &answer);

                    if (answer == 'y')
                    {

                        printf("메뉴로 돌아갑니다.\n");
                        getchar();
                        break;
                    }
                    
                    else
                    {
                        printf("종료합니다.\n");
                        printf("반환된 금액:%d원\n", money);
                        printf("(enter)\n");
                        getchar();
                        getchar();
                        money = 0;
                        break;
                    }
                }

                else // 돈이 모자랄 때
                {
                    printf("돈이 모자랍니다.(enter)\n");
                    getchar();
                    getchar();
                }

            } // 2번 블럭 끝

            else // 오입력 > back
            printf("다시 입력해주세요.\n");
            continue;
        }
    }
    return 0;
}

// 돈을 넣고서 물건을 골랐는데, 돈이 모자라서 못산거면 돈이 남아있어야함

 

내가 겪었던 문제:

y를 누르면 잔액이 넘어가야되는데

처음 입력했던 금액이 출력됨

알고보니 내가 잔돈 얼마인지 printf 함수만 쓰고

잔액을 나타내는 변수값을 수정해주지 않았다.. (바보)

'일지' 카테고리의 다른 글

Day 18 [함수]  (2) 2025.03.14
Day 16 반복문  (2) 2025.03.12
Day 15  (0) 2025.03.11
Day 14  (0) 2025.03.10
Day 13 - (0307) / C언어  (4) 2025.03.07
'일지' 카테고리의 다른 글
  • Day 18 [함수]
  • Day 16 반복문
  • Day 15
  • Day 14
joo_coding
joo_coding
2025.02.18~
  • joo_coding
    주코딩일지
    joo_coding
  • 전체
    오늘
    어제
    • 분류 전체보기 (163)
      • 일지 (19)
      • 계획표 (7)
      • 프로젝트 (6)
      • C언어 (35)
        • 연습장 (12)
      • C++ (3)
      • Python (28)
        • 연습장 (11)
      • TCP IP (4)
      • DB (2)
      • ubuntu (1)
      • Git (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    c언어 #vscode #gcc #윈도우 #c언어윈도우 #gcc윈도우 #vscode윈도우 #c #c++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
joo_coding
Day 17 [조건문]
상단으로

티스토리툴바