마지막 질문...
유우
질문 제목 : 마지막 질문
코드 추가 방법
질문 내용 :
제가 밑의 코드로코딩중인데요
지금 프로그램에서는 메뉴를 주문할때 안주 1개, 술 1개씩만 주문이 되고
안주 1개가 주문되어 있는 상태에서 다른 안주 1개를 다시 선택하면
추가가 되는게 아니라 앞의 안주에 덮어씌워져 버리거든요
여기에수량의 개념을 추가 한다던지 앞의 안주와 겹쳐지지 않게
이름과 가격이 추가되게 만들려면 어찌해야 할까요..#include stdio.h
#include string.h
#include stdlib.h
#include conio.h
int get_table(void);
void table(void);
void table_switch(int i);
void table_a(int num);
void order(int num);
void payment(int num);
struct menua
{
char anju[30];
int price;
};
struct menus
{
char sul[20];
int price;
};
struct table
{
struct menua sanju;
struct menus ssul;
};
struct menua menua_[4] = {{주문한 안주 없음, 0}, {김치찌개, 13000}, {부대찌개, 15000}, {생태찌개, 16000}};
struct menus menus_[4] = {{주문한 주류 없음, 0}, {좋은데이, 3000}, {시원소주, 3000}, {참이슬, 3000}};
struct table stable[6];
void main(void)
{
int choice;
while(1) {
choice = get_table();
table(choice-1);
}
}
int get_table(void)
{
int i;
char str[3];
int table_sum[6];
for(i = 0; i 6; i++) {
table_sum[i] = stable[i].sanju.price + stable[i].ssul.price;
}
system(cls);
printf(==========================================================================\n);
printf( 술집\n);
printf(==========================================================================\n);
printf(전체 테이블\n);
printf(==========================================================================\n);
printf(■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n);
printf(■ ■ ■ ■\n);
printf(■ ■ ■ ■\n);
printf(■ 1번 테이블 ■ 2번 테이블 ■ 3번 테이블 ■\n);
printf(■ %10d원 ■ %10d원 ■ %10d원 ■\n, table_sum[0], table_sum[1], table_sum[2]);
printf(■ ■ ■ ■\n);
printf(■ ■ ■ ■\n);
printf(■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n);
printf(■ ■ ■ ■\n);
printf(■ ■ ■ ■\n);
printf(■ 4번 테이블 ■ 5번 테이블 ■ 6번 테이블 ■\n);
printf(■ %10d원 ■ %10d원 ■ %10d원 ■\n, table_sum[3], table_sum[4], table_sum[5]);
printf(■ ■ ■ ■\n);
printf(■ ■ ■ ■\n);
printf(■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n\n);
do{
printf(테이블 번호를 입력해 주세요 (1~6) : );
gets(str);
i = atoi(str);
} while(i1 || i6);
return i;
}
void table(int num)
{
int i;
char str[3];
system(cls);
table_a(num);
do {
printf(수행하실 작업을 입력해 주세요 (1~3) : );
gets(str);
i = atoi(str);
} while(i 1 || i 3);
table_switch(num, i);
}
void table_switch(int num, int i)
{
switch(i) {
case 1 : order(num);
break;
case 2 : payment(num);
break;
case 3 : get_table(num);
break;
}
}
void table_a(int num)
{
printf(==========================================================================\n);
printf( 술집\n);
printf(==========================================================================\n);
printf( %d번 테이블\n,num+1);
printf(==========================================================================\n);
printf(■■■■■■■■■■■■■■■■■■■■■■■■■■■\n);
printf(■ ■ sp; ■\n);
printf(■ ■ ■\n);
printf(■ ■ ■\n);
printf(■ ■ ■\n);
printf(■ 1. 메뉴주문 ■%16s %6d원\n, stable[num].sanju.anju, stable[num].sanju.price);
printf(■ 2. 계산 ■%16s %6d원\n, stable[num].ssul.sul, stable[num].ssul.price);
printf(■ ■총액 %18d원\n, stable[num].sanju.price + stable[num].ssul.price);
printf(■ ■\n);
printf(■ 3. 돌아가기 ■\n);
printf(■ ■\n);
printf(■ ■\n);
printf(■ ■\n);
printf(■ ■\n);
printf(■■■■■■■■■■■■■\n\n);
}
void order(int num)
{
int m, n;
char str[3];
printf(\n주문할 메뉴를 선택해주세요\n);
printf(1. 안주류 2. 주류\n);
printf( );
gets(str);
m = atoi(str);
if(m == 1){
printf(\n주문할 안주를 선택해주세요\n);
do {
printf(1. 김치찌개 2. 부대찌개 3. 생태찌개\n);
printf( );
gets(str);
n = atoi(str);
} while(n 1 || n 3);
switch(n) {
case 1 :
stable[num].sanju=menua_[1];
break;
case 2 :
stable[num].sanju=menua_[2];
break;
case 3 :
stable[num].sanju=menua_[3];
break;
}
}
else if(m == 2) {
printf(\n주문할 소주를 선택해주세요\n);
do {
printf(1. 좋은데이 2. 시원소주 3. 참이슬\n);
printf( );
gets(str);
n = atoi(str);
} while(n 1 || n 3);
switch(n) {
case 1 :
stable[num].ssul = menus_[1];
break;
case 2 :
stable[num].ssul = menus_[2];
break;
case 3 :
stable[num].ssul = menus_[3];
break;
}
}
}
void payment(int num)
{
file *fp;
printf(\n\n계산서\n\n);
printf(%s %d원\n, stable[num].sanju.anju, stable[num].sanju.price);
printf(%s %d원\n, stable[num].ssul.sul, stable[num].ssul.price);
printf(총액 : %d원\n, stable[num].sanju.price + stable[num].ssul.price);
fp = fopen(data.txt, a);
fprintf(fp, \n\n계산서\n%d번 테이블\n%s %d원\n%s %d원\n총액 : %d원, num, stable[num].sanju.anju, stable[num].sanju.price, stable[num].ssul.sul, stable[num].ssul.price, stable[num].sanju.price+stable[num].ssul.price);
fclose(fp);
stable[num].sanju = menua_[0];
stable[num].ssul = menus_[0];
getch();
}
-
PinkPearl
메인함수가 어딨는지 못찾는 건 내 눈이 이상한건가... ㅡ_ㅡ ;;
정확하게 안봐서 도움이 될지는 모르겠지만....
안주가 1개라면 변수를 하나만 써도 되겠지만
2개이상이라면 배열을 쓰면 편하게 관리가 가능합니다.
a를 배열, a_cnt를 a가 현재 가진 수량이라고 할때
a[a_cnt] = val
a_cnt++
를 하게되면 a의 새로운 공간에 새로운 변수(안주)의 추가가 가능하구요.
0~a_cnt-1까지가 현재 a가 가지고 있는 안주의 종류가 됩
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2694370 | 내일까진데 함수호출 제발 도와주세요!!!!!!!!!11 | 들찬 | 2025-05-10 |
2694339 | putchar()의 괄호 안에 int c=10;로 전에 선언된 c를 넣으면 안되는 이유에서 제가 생각한 것이 그 이유가 되는지 확인하고 싶습니다. (3) | 미르 | 2025-05-10 |
2694316 | 이 코드 어디가 잘못되었는지 고수분들 ㅠㅠ (2) | 나빛 | 2025-05-10 |
2694285 | 언어 공부하는 과정 좀 추천해주세요! (1) | 아빠몬 | 2025-05-09 |
2694258 | 카운터.. 질문입니다. (4) | 하늘빛눈망울 | 2025-05-09 |
2694229 | 단순한 질문이요 (8) | 여름 | 2025-05-09 |
2694202 | 용돈을 가지고 할 수 있는 일을 여러가지로 출력하는 방법 좀 알려주세요! (2) | 미나 | 2025-05-09 |
2694145 | 화면깜빡임을 없애고 싶은데요... (1) | 어서와 | 2025-05-08 |
2694069 | unsigned 질문입니다. | 힘차 | 2025-05-07 |
2694012 | 전공 비전공자 개발자 (10) | 말글 | 2025-05-07 |
2693984 | 오버로딩이 무엇인가요? (2) | 헛매질 | 2025-05-07 |
2693956 | PlaySound재생이 안됩니다!(C에 음악넣기) | 지존 | 2025-05-06 |
2693928 | &와 *의 사용에 관한 명확한 이해 | 제나 | 2025-05-06 |
2693903 | 반복문 설명좀요 ㅠㅠ (2) | 란새 | 2025-05-06 |
2693869 | stdio.h 는 왜 쓰는건가요? (1) | 큰꽃들 | 2025-05-06 |
2693842 | 포인터 변수의 주소값끼리 더하는 것에 대해서 질문드립니다. (1) | 진솔 | 2025-05-05 |
2693811 | 소수 출력;;;; | 화이트캣 | 2025-05-05 |
2693788 | 이런 함수는 없나요? (3) | 앤드류 | 2025-05-05 |
2693758 | txt파일 불러와서 행렬로 저장 | 큰애 | 2025-05-05 |
2693727 | scanf 오류 문제!! (2) | 큰나래 | 2025-05-04 |