자판기
<교수님 자판기>
<내가 만든 자판기>
// 최최종
// 오후
// 자판기
// 메뉴 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 |