본문 바로가기
dev/c

[C언어] 자판기 (Vending Machine) v1.3

by 이이제이 2016. 4. 20.
728x90
반응형

파이썬 자판기

c언어로 자판기 만들기 v1.3

1. gets(), scanf() -> fgets()로 변경

2. 메인 메뉴 루프 만들기, 종료 처리

3. 금액이 부족한경우 거스름돈 반환 후 금액 재입력

TODO

1. 숫자가 아닌경우 exception처리


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int strToInt(char *strValue) {
	int intValue = 0;
	int i = 0;
	for (i = 0; i < strlen(strValue) - 1; i++) {
		intValue += (strValue[i] - '0');
		if (i != strlen(strValue) - 2) {
			intValue *= 10;
		}
	} 
	return intValue;
}

void showMenu() {
	printf("\n| ******** MENU ******** |");
	printf("\n| (1) 참깨라면 - 1,000원 |");
	printf("\n| (2) 햄 버 거 - 1,500원 |");
	printf("\n| (3) 콜    라 -   800원 |");
	printf("\n| (4) 핫    바 - 1,200원 |");
	printf("\n| (5) 초코우유 - 1,500원 |");
	printf("\n| (6) 시 스 템   종   료 |");
}

int getPrice() {
	char selectedMenu[3] = {0,};
	char amount[30] = {0, };
	int price = 0;

	while(1) {
		showMenu();
		// 메뉴 선택
		printf("\n\n=> 메뉴를 선택해주세요.: ");
		fgets(selectedMenu, 3, stdin);
	
		if (selectedMenu[0] == '1') {
			printf("\n참깨라면을 선택하셨습니다.");
			price = 1000;
			break;
		} else if (selectedMenu[0] == '2') {
			printf("\n햄버거를 선택하셨습니다.");
			price = 1500;
			break;
		} else if (selectedMenu[0] == '3') {
			printf("\n콜라를 선택하셨습니다.");
			price = 800;
			break;
		} else if (selectedMenu[0] == '4') {
			printf("\n핫바를 선택하셨습니다.");
			price = 1200;
			break;
		} else if (selectedMenu[0] == '5') {
			printf("\n초코우유를 선택하셨습니다.");
			price = 1500;
			break;
		} else if (selectedMenu[0] == '6') {
			return 0;
		} else {
			printf("\n메뉴 중에서 선택해주세요...-_-");
		}
	}

	// 수량 선택
	printf("\n\n=> 수량을 선택해주세요.: ");
	fgets(amount, 30, stdin);
	int amountInt = strToInt(amount);

	return price * amountInt;
}

int main() {
	char money[30] = {0,};

	while(1) {
		printf("\n\n=> 돈을 넣어주세요.: ");
		fgets(money, 30, stdin);
		
		int price = getPrice();
		if (price == 0) {
			printf("\n=> 시스템을 종료하겠습니다.");
			getchar();
			return 0;
		}
		int moneyInt = strToInt(money);
		int change = moneyInt - price;
	
		if (change < 0) {
			printf("\n=> %d원이 부족합니다.-ㅠ-", change * -1);
			printf("\n=> 감사합니다. 거스름돈은 %d 원 입니다.^^", moneyInt);
		} else {
			printf("\n=> 감사합니다. 거스름돈은 %d 원 입니다.^^", change);
		}
	}
	return 0;
}


반응형

'dev > c' 카테고리의 다른 글

[C언어] srand, rand 랜덤으로 문자 생성하기  (0) 2017.06.13
[C언어] 자판기 (Vending Machine) v1.0  (1) 2016.04.19

댓글