C/명품 C언어 프로젝트(안기수 저)

명품 C언어 프로젝트 9.2장 디지털 레시피

꾸준함. 2017. 9. 24. 00:34

/*

디지털 레시피 프로그램

*/

#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언어 프로젝트 안기수 저

반응형