#include <stdio.h>

#define CASH_USD_BUY   1253.50
#define CASH_EURO_BUY  1224.60
#define CASH_YEN_BUY   1006.87
#define CASH_CNW_BUY   156.29

#define CASH_USD_SELL  1210.44
#define CASH_EURO_SELL 1176.82
#define CASH_YEN_SELL  1006.87
#define CASH_CNW_SELL  135.46

#define CHECK_USD_BUY  1244.32
#define CHECK_EURO_BUY 1218.72
#define CHECK_YEN_BUY  999.55

#define CHECK_USD_SELL 1220.00
#define CHECK_EURO_SELL        1186.96
#define CHECK_YEN_SELL 979.38

#define USD     1
#define EURO    2
#define YEN     3
#define CNW     4

#define CASH    1
#define CHECK   2

#define BUY     1
#define SELL    2


main()
{
        int     normal_condition;
        int     flag;

        int     kind_of_foreign_money;
        int     cash_or_check;
        int     buy_or_sell;
       
        double  money;
        double  exchange_rate;
        double  exchange_money;

        /* 프로그램 설명 */

        printf("환전 프로그램입니다.\n");

        /* 환율표 출력 */

        /* 사용자 입력 */
        normal_condition = 1;

        printf("외화 종류는 ? (미국 달러는 1, 유로화는 2, 엔화는 3, 중국원화는 4) : ");
        flag = scanf("%d", &kind_of_foreign_money);

        while ((1== flag) && ((kind_of_foreign_money < 1) || (kind_of_foreign_money > 4))) {
               printf("외화 번호는 1 ~ 4입니다. 다시 입력 : ");
               flag = scanf("%d", &kind_of_foreign_money);
        }
        if (1 != flag) {
               normal_condition = 0;
        }

        if (normal_condition) {
               printf("현금과 여행자 수표를 선택하세요.(현금은 1, 여행자 수표는 2) : ");
               flag = scanf("%d", &cash_or_check);

                while ((1 == flag) && (cash_or_check != CASH) && (cash_or_check != CHECK)) {
                       printf("1 또는 2를 선택하세요. 다시 입력 : ");
                       flag = scanf("%d", &cash_or_check);
               }
               if (1 != flag) {
                       normal_condition = 0;
               }
        }

       
        if (normal_condition) {
               printf("사는 경우입니까 파는 경우입니까 ? ( 살때 1, 팔때 2) : ");
               flag = scanf("%d", &buy_or_sell);
       
               while ((1 == flag) && (buy_or_sell != BUY) && (buy_or_sell != SELL)) {
                       printf("1 또는 2를 선택하세요. 다시 입력 : ");
                       flag = scanf("%d", &buy_or_sell);
               }
               if (1 != flag) {
                       normal_condition = 0;
               }
        }

        if (normal_condition) {
               printf("금액을 입력하세요 : ");
               flag = scanf("%lf", &money);

               while ((1 == flag) && (money < 0)) {
                       printf("금액은 0 이상이어야 합니다.\n");
                       flag = scanf("%lf", &money);
               }
               if (1 != flag) {
                       normal_condition = 0;
               }
        }

        if (normal_condition) {

               /* 적용할 환율 선택 */
               if (CASH == cash_or_check) {
                       if (USD == kind_of_foreign_money) {
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CASH_USD_BUY;
                              }
                              else {
                                      exchange_rate = CASH_USD_SELL;
                              }
                       }
                       else if (EURO == kind_of_foreign_money) {
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CASH_EURO_BUY;
                              }
                              else {
                                      exchange_rate = CASH_EURO_SELL;
                              }
                       }
                       else if (YEN == kind_of_foreign_money) {
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CASH_YEN_BUY;
                              }
                              else {
                                      exchange_rate = CASH_YEN_SELL;
                              }
                       }
                       else { /* China Won */
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CASH_CNW_BUY;
                              }
                              else {
                                      exchange_rate = CASH_CNW_SELL;
                              }
                       }
               }
               else {  /* CHECK */
                       if (USD == kind_of_foreign_money) {
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CHECK_USD_BUY;
                              }
                              else {
                                      exchange_rate = CHECK_USD_SELL;
                              }
                       }
                       else if (EURO == kind_of_foreign_money) {
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CHECK_EURO_BUY;
                              }
                              else {
                                      exchange_rate = CHECK_EURO_SELL;
                              }
                       }
                       else if (YEN == kind_of_foreign_money) {
                              if (BUY == buy_or_sell) {
                                      exchange_rate = CHECK_YEN_BUY;
                              }
                              else {
                                      exchange_rate = CHECK_YEN_SELL;
                              }
                       }
                       else { /* China Won */
                              exchange_rate = 0.0;
                       }
               }

               /* 환전 */

               if (exchange_rate > 0) {
                       exchange_money = money * exchange_rate;
                       printf("환전 결과 : %.2f\n", exchange_money);
               }
               else {
                       printf("중국에서는 여행자 수표가 통용되지 않습니다.\n");
               }
        }
        else {  /* 입력 오류 */
               printf("입력 오류입니다.\n");
        }
}