/*
디지털 레시피 프로그램
*/
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
int menu_display(void);
int sub_menu_display01(void);
int sub_menu_display02(void);
void sub_main01(void);
void sub_main02(void);
void press_any_key(void);
void display_recipe(void); //레시피 출력
void volume_calculation(void); //부피환산
void weight_calculation(void); //무게환산
void print_unit(char *ms_char[], int n);
void volume_calculate(int basic, int transe, double measure, char *ms_char[]);
void weight_calculate(int basic, int transe, double measure, char *ms_char[]);
int main(void)
{
int c;
while ((c = menu_display()) != 3)
{
switch (c)
{
case 1:
sub_main01();
break;
case 2:
sub_main02();;
break;
default:
break;
}
}
printf("\n");
return 0;
}
int menu_display(void)
{
int select;
system("cls");
printf("디지털 레시피\n\n");
printf("1. 레시피\n");
printf("2. 단위환산\n");
printf("3. 프로그램 종료\n\n");
printf("메뉴번호 입력>");
select = getch() - 48;
return select;
}
void sub_main01(void)
{
int c;
while ((c = sub_menu_display01()) != 2)
{
switch (c)
{
case 1:
display_recipe();
break;
default:
break;
}
}
}
int sub_menu_display01(void)
{
int select;
system("cls");
printf("레시피\n\n");
printf("1. 카르보나라\n");
printf("2. 메인 메뉴로 이동\n\n");
printf("메뉴번호 입력>");
select = getch() - 48;
return select;
}
void sub_main02(void)
{
int c;
while ((c = sub_menu_display02()) != 3)
{
switch (c)
{
case 1:
volume_calculation();
break;
case 2:
weight_calculation();
break;
default:
break;
}
}
}
int sub_menu_display02(void)
{
int select;
system("cls");
printf("단위환산\n\n");
printf("1. 부피(volume) 환산\n");
printf("2. 무게(weight) 환산\n");
printf("3. 메인메뉴로 이동\n\n");
printf("메뉴번호 입력>");
select = getch() - 48;
return select;
}
void press_any_key(void)
{
printf("\n\n");
printf("아무키나 누르면 이전 메뉴로...");
getch();
}
/*
파일로부터 읽은 레시피를 화면에 출력하는 함수 display_recipe
*/
void display_recipe(void)
{
FILE *fp1 = fopen("C:\\carbonara.txt", "r");
char chr1[82];
system("cls");
while (!feof(fp1))
{
fgets(chr1, 80, fp1);
if (chr1[0] == 10)
{
printf("\n다음단계로 이동하려면 아무키나 누르시오.");
getch();
system("cls");
}
else
printf("%s", chr1);
}
printf("\n레시피 끝.\n");
press_any_key();
fclose(fp1);
}
/*
부피에 대한 단위 변환 호출 함수 volume_calculation
*/
void volume_calculation(void)
{
char *ms_char[6] = { "밀리리터", "teaspoon", "tablespoon", "cup", "리터", "갤런" };
double measure;
int basic, transe;
system("cls");
printf("부피에 대한 도량형 환산 프로그램\n\n");
print_unit(ms_char, 6);
printf("\n\n기본단위와 변환단위\n입력 후 Enter(예:1 5)>");
scanf("%d %d", &basic, &transe);
printf("값을 입력하고 Enter>");
scanf("%lf", &measure);
printf("\n");
volume_calculate(basic, transe, measure, ms_char);
press_any_key(); //프로그램의 실행을 잠시 멈추게 함
}
/*
무게에 대한 단위 변환 호출 함수 weight_calculation
*/
void weight_calculation(void)
{
char *ms_char[4] = { "그램", "온즈", "파운드", "킬로그램" };
double measure;
int basic, transe;
system("cls");
printf("무게에 대한 도량형 환산 프로그램\n\n");
print_unit(ms_char, 4);
printf("\n\n기본단위와 변환단위\n입력 후 Enter(예:1 5)>");
scanf("%d %d", &basic, &transe);
printf("값을 입력하고 Enter>");
scanf("%lf", &measure);
printf("\n");
weight_calculate(basic, transe, measure, ms_char);
press_any_key(); //프로그램의 실행을 잠시 멈추게 함
}
/*
변환 단위 출력 함수 print_unit
*/
void print_unit(char *ms_char[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d:%-9s ", i, ms_char[i]);
if (i % 3 == 2)
printf("\n");
}
}
/*
부피에 대한 단위 변환 함수 volume_calculate
*/
void volume_calculate(int basic, int transe, double measure, char *ms_char[])
{
double msre[10], unit, result;
msre[0] = 3758.279;
msre[1] = msre[0] / 5.;
msre[2] = msre[1] / 3.;
msre[3] = msre[2] / 16.667;
msre[4] = msre[3] / 4.;
msre[5] = msre[4] / 3.758;
unit = msre[basic];
result = measure*(msre[transe] / unit);
printf("%.3f %-10s : ", measure, ms_char[basic]);
printf("%.3f %-10s", result, ms_char[transe]);;
}
/*
무게에 대한 단위 변호한 함수 weight_calculation
*/
void weight_calculate(int basic, int transe, double measure, char *ms_char[])
{
double msre[4], unit, result;
msre[0] = 1000;
msre[1] = msre[0] / 28.3459;
msre[2] = msre[1] / 16.;
msre[3] = msre[2] / 2.205;
unit = msre[basic];
result = measure*(msre[transe] / unit);
printf("%.2f %-8s: ", measure, ms_char[basic]);
printf("%.5f %-8s", result, ms_char[transe]);
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 명품 C언어 프로젝트 안기수 저
'C > 명품 C언어 프로젝트(안기수 저)' 카테고리의 다른 글
명품 C언어 프로젝트 10.2장 휴대전화 문자 (0) | 2017.09.29 |
---|---|
명품 C언어 프로젝트 10.1장 디지털 시계 (8) | 2017.09.25 |
명품 C언어 프로젝트 9.1장 디지털 피아노 (0) | 2017.09.22 |
C언어 청기백기 게임(간단한 애니메이션) (10) | 2017.09.18 |
명품 C언어 프로젝트 8.10장 줄다리기 게임 (0) | 2017.09.18 |