<프로그램 개요>
환율을 입력해 달러를 원으로, 원을 달러로 계산해 출력해주는 프로그램이다.
<추가해본 기능>
3번째 자리마다 ','를 넣어서 결과 값을 보기 쉽게 출력해주는 기능을 넣었다.
<문제 해결에 어려웠던 점>
1. 정수형 숫자를 문자열로 바꿀 때
2. 정수형 숫자를 거꾸로 출력할 때
3. ','를 출력해야 했을 때
<문제 해결 방법>
구글링을 통해 다른 사람의 코드를 분석하며 공부해봤다.
<느낀 점>
스스로 창의적인 코드를 만들어 프로그램을 짜는 것은 쉬운 일이 아닌 것 같다..
창의성은 여러 가지 지식이 뭉쳐서 시너지를 내는 것이기 때문에 나보다 실력이 좋은 분들의 코드를 분석하는 것도 좋은 방법이라고 생각했다. 그렇게 내 것이 쌓인다면 나도 언젠간 창의적인 코드를 짜서 효율적인 프로그램을 만들 수 있을 거라 믿는다.
하루하루 꾸준히 도전한다면 어느샌가 실력이 늘어있을 거다!!
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
|
#include <stdio.h>
void MakeStringComa(int result_value,char *result_str); // 결과 값을 문자열로 바꿔 ','를 출력가능하게 해주는 함수
int main(void)
{
int exchange_rate,dollar,won,way; //환율, 달러, 원, 서비스 방법 변수 선언
int result_value; // 결과 값을 담을 변수 선언
char result_str[20]; // 결과 값을 문자열로 바꿔서 담을 변수
do
{
printf("========================================================================\n");
printf("현재 달러에 대한 원화 환율을 입력해주세요(소수점 불가능) >> ");
scanf("%d",&exchange_rate);
while (1)
{
printf("========================================================================\n");
printf("원하시는 서비스를 선택해주세요\n");
printf("1. 달러 => 원\n");
printf("2. 원 => 달러\n");
printf("========================================================================\n");
scanf("%d",&way);
printf("%d번 서비스를 선택하셨습니다.\n",way);
if (way == 1) //way가 1일 때 달러를 원으로 바꾸는 기능
{
printf("========================================================================\n");
printf("바꿀 달러를 입력해주세요 >> ");
scanf("%d",&dollar);
result_value = dollar * exchange_rate; //달러와 환율을 곱해 원을 구하는 코드
MakeStringComa(result_value,result_str); //결과 값에 콤마를 넣어주는 함수 ex) 1,000,000
printf("결과값 : %s원 입니다.\n",result_str); //결과 값(문자열) 출력 후 탈출
break;
}
else if (way == 2) //way가 2일 때 원을 달러로 바꾸는 기능
{
printf("========================================================================\n");
printf("바꿀 원화를 입력해주세요 >> ");
scanf("%d",&won);
result_value = won / exchange_rate; //환율로 원을 나누어 달러를 구하는 문장
MakeStringComa(result_value,result_str); //결과 값에 콤마를 넣어주는 함수 ex) 1,000,000
printf("결과값 : %s$ 입니다.\n",result_str); //결과 값(문자열) 출력 후 탈출
break;
}
else //1,2 외에 다른 숫자를 입력했을 경우
{
printf("<Error!!>> 다시 입력해주세요.\n");
continue;
}
}
printf("========================================================================\n");
printf("프로그램을 다시 사용하고 싶으시다면 아무 숫자나 눌러주세요.(Enter an integer)\n");
printf("프로그램을 종료하고 싶으시다면 아무 문자나 눌러주세요.(q to quit)\n");
printf("========================================================================\n");
} while (scanf("%d",&way)==1); // 문자를 입력한다면 %d이기 때문에 scanf가 입력받을 값이 아님. 그래서 0반환 후 종료
// 숫자를 입력한다면 1반환 후 계속 실행
return 0;
}
void MakeStringComa(int result_value,char *result_str)
{
char str[20],*p; // 결과 값을 담기위해 포인터와 배열 선언
if (result_value < 0) //결과 값이 음수일 경우
{
result_value *= -1;
*result_str++ = '-';
}
if (result_value == 0) //결과 값이 0일 경우
{
*result_str++ = '0';
*result_str++ = '\0';
}
p = str;
for (int i = 0; result_value > 0; i++) //결과 값을 거꾸로 str을 가리키는 *p에 대입해주면서 ',' 까지 대입
{
if (i && (i % 3) == 0) //3번째 자리마다 ',' 를 넣어줌
*p++ = ',';
*p++ = (result_value % 10) + '0'; //결과 값을 거꾸로 만들어주는 코드
result_value /= 10; // ""
}
p--; //for구문을 탈출할 때 p주소값이 증가했으므로 다시 감소시켜줌
while (p >= str)
{
*result_str++ = *p--;
}
*result_str = '\0'; //마지막에 null character 대입
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
틀린 부분이 있다면 피드백 주시면 감사하겠습니다.
좋은 하루 보내세요~!
'Programming > C' 카테고리의 다른 글
C언어) 간단한 미로찾기 게임 (0) | 2020.06.02 |
---|---|
C언어) 순환을 이용한 최댓값 구하기 (0) | 2020.04.29 |
C언어) 달력 만들기(2/2) 기능추가, code refactoring (0) | 2020.03.26 |
C언어) 달력 만들기(1/2) 기본 (1) | 2020.03.23 |