/*
16진수를 10진수로 변경
*/
#include <stdio.h>
#define MAX 10 // 입력받을 최대 자리수
int convert(char); // 입력된 문자를 숫자로 변경한다.
int multi(int m); // m만큼 16의 승을 구한다.
int STATE = 1; // 잘못된 입력을 받으면 0으로 변경된다.
main()
{
char ch, array[MAX];
int x = 0;
int count =0;
int sum=0; // 총 값
printf("Input a HEX : ");
while((ch = getchar()) != '\n' && x <= MAX) //입력된 값을 배열에 입력
{
array[x++] = ch;
}
count = x;
for(int i=0; i < x ; i++)
sum += convert(array[i]) * multi(--count);
if(STATE) { // 정상일 경우만 출력
printf("convert HEX into DEC : %d\n", sum);
}
return 0;
}
int convert(char c)
{
if('a' <= c && c <= 'f') //소문자이면 대문자로 변환
c = c - 32;
if('A' <= c && c <= 'F') //대문자이면 16진수에 해당되는 값으로 변환
return c - 'A' + 10;
else if('0' <= c && c <= '9') //숫자문자이면 문자를 숫자로 변환
return c - '0';
else {
printf("You input a wrong number\n");
STATE = 0; // 잘못된 값을 입력 받았으므로 STATE 값을 0으로 변경
}
}
int multi(int m)
{
if(m == 0)
return 1;
if(m >= 1)
return 16 * multi(m-1);
}
'Technology > Algorithms' 카테고리의 다른 글
Algorithms / 직사각형, 원 면적과 넓이 구하기 (0) | 2009.12.05 |
---|---|
Algorithms / 온도 변환 소스코드(섭씨, 화씨) (0) | 2009.12.05 |
Algorithms / Topological order 위상정렬(2) (0) | 2009.12.05 |
Algorithms / Topological order (위상정렬) (0) | 2009.12.05 |
Algorithms / 너비 우선 탐색(Breath first search) (0) | 2009.12.05 |