티스토리 뷰
때에 따라서는 환율을 다루는 경우도 생길 것이다. 이 경우 최대한 정확하게 계산되도록 해야 한다.
환율을 변환하는 프로그램을 작성하라. 여기에서는 유로에서 미국 달러로 변환시킨다.
먼저 유로 금액을 입력 받은 다음 유로 환율을 입력 받는다.
그리고는 유로에 해당하는 미국 달러 값을 출력한다. 환율 변환식은 다음과 같다.
- amount to는 변환될 미국 달러 가격이다.
- amount from은 유로 가격이다.
- rate from은 현재의 유로 환율이다.
- rate to는 현재의 미국 달러 환율이다.
#출력 예 How many Euros are you exchanging? 81
What is the exchange rate? 137.51
81 Euros at an exchange rate of 137.51 is
111.38 dollars
#제약 조건
- 센트를 기준으로 하는 소숫점 다음에 숫자가 있을 때는 센트를 기준으로 올림 처리를 할 것
- 한 개의 출력문만 사용할 것
#도전 과제
- 환율표를 프로그램에 넣은 다음 환율 대신 국가 이름을 입력 받도록 프로그램을 수정해보자.
- 애플리케이션에 별도의 API를 적용하여 현재의 업데이트된 환율을 적용하는 프로그램으로 수정해보자.
My code
도전과제 2번을 위해,
한국수출입은행사이트에서 무료로 제공하는 API 사용함.
API를 사용하기 위한 인증키는 가렸음.
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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Exam._11 { public partial class Form1 : Form { // 각 환율 변수 public string CNH = ""; public string JPY = ""; public string USD = ""; public string EUR = ""; public string KRW = "1"; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // json parse using (WebClient wc = new WebClient()) { wc.Encoding = Encoding.UTF8; string jsonURL = "https://www.koreaexim.go.kr/site/program/financial/exchangeJSON?authkey=인증키값&searchdate=" + DateTime.Now.ToString("yyyyMMdd") + "&data=AP01"; string json = wc.DownloadString(jsonURL); // API 사이트에서 json 받아옴 JArray array = JArray.Parse(json); foreach (JObject jobj in array) { // deal_bas_r = 매매기준 if (jobj["cur_unit"].ToString() == "CNH") // 위완화 CNH = jobj["deal_bas_r"].ToString(); if (jobj["cur_unit"].ToString() == "USD") // 달러 USD = jobj["deal_bas_r"].ToString(); if (jobj["cur_unit"].ToString() == "JPY(100)") // 엔화 JPY = (double.Parse(jobj["deal_bas_r"].ToString())/100).ToString(); if (jobj["cur_unit"].ToString() == "EUR") // 유로화 EUR = jobj["deal_bas_r"].ToString(); } } cbStandard.SelectedIndex = 1; cbChange.SelectedIndex = 0; } // 콤보박스1의 값이 바뀔때 환율 변환 private void cbStandard_SelectedIndexChanged(object sender, EventArgs e) { string tValue = cbStandard.Text.Substring(cbStandard.Text.Length - 3); ExchangeRate(); switch (tValue) { case "CNH": lblStandard.Text = "위안"; break; case "JPY": lblStandard.Text = "엔"; break; case "USD": lblStandard.Text = "달러"; break; case "EUR": lblStandard.Text = "유로"; break; default: lblStandard.Text = "원"; break; } } // 콤보박스2의 값이 바뀔때 환율 변환 private void cbChange_SelectedIndexChanged(object sender, EventArgs e) { string tValue = cbChange.Text.Substring(cbChange.Text.Length - 3); ExchangeRate(); switch (tValue) { case "CNH": lblChange.Text = "위안"; break; case "JPY": lblChange.Text = "엔"; break; case "USD": lblChange.Text = "달러"; break; case "EUR": lblChange.Text = "유로"; break; default: lblChange.Text = "원"; break; } } // 텍스트박스의 값이 바뀔 때 환율 변환 private void txtStandard_TextChanged(object sender, EventArgs e) { if (txtStandard.Text == "") { txtStandard.Text = "1"; } ExchangeRate(); } // 환율계산 private void ExchangeRate() { if (cbChange.Text != "") { string t1Value = cbStandard.Text.Substring(cbStandard.Text.Length - 3); string t2Value = cbChange.Text.Substring(cbChange.Text.Length - 3); double t1 = double.Parse(GetType().GetField(t1Value).GetValue(this).ToString()); double t2 = double.Parse(GetType().GetField(t2Value).GetValue(this).ToString()); double value = double.Parse(txtStandard.Text); double result = (t1 * value) / t2; txtChange.Text = result.ToString(); } } } } | cs |
Result
'Coding Training > C#' 카테고리의 다른 글
코딩트레이닝 C# 연습문제 13. 복리 계산 (0) | 2018.08.02 |
---|---|
코딩트레이닝 C# 연습문제 12. 단리 계산 (0) | 2018.08.02 |
코딩트레이닝 C# 연습문제 10. 셀프계산대 (0) | 2018.07.24 |
코딩트레이닝 C# 연습문제 09. 페인트 계산기 (0) | 2018.07.18 |
코딩트레이닝 C# 연습문제 08. 피자 파티 (0) | 2018.07.18 |
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글