U E D R , A S I H C RSS

숫자를한글로바꾸기/허아영

소감

완전 재밌다.
근데 메인이 좀 길어서 보기 안좋은 거 같은데, 변수를 넘기는게 ..흐음 ㅋㅋ
리펙토링 하지않고 올린다.

코드

{{{~cpp 

{{{~cpp 
#include <stdio.h> 
	
int num_len(int number); 
void number_data_input(int number, int number_data[10]); 

void main() 
{ 
	int number, number_len, i = 0; 
	int number_data[10]; 
	char korean_data[20] = "일이삼사오육칠팔구"; 
	char num_position[15] = " 십백천만"; //<-사실 여기도 그냥 "십백천만"이라고 해도 된다. 
	
	while(1) 
	{ 
		i = 0; 
		printf("끝내려면 0n"); 
		scanf("%d", &number); 
		if(number == 0) 
			break; 
		
		number_len = num_len(number); 
		number_data_input(number, number_data); 
		
		//print
		while(i < number_len) 
		{ 
			if(number_data[i] == 0)
			{
			}else{ 
				printf("%c", korean_data[2*number_data[i] - 2]); 
				printf("%c", korean_data[2*number_data[i] - 1] ); 
				printf("%c", num_position[2*(number_len - i - 1)]); 
				printf("%c", num_position[2*(number_len - i - 1)+1]); 
			}
			i++; 
		}
		printf("n"); 
	} 
} 

int num_len(int number) 
{ 
	int lengh = 1; 
	while(number > 9) 
	{ 
		++lengh; 
		number /= 10; 
	} 
	return lengh; 
} 

void number_data_input(int number, int number_data[10]) 
{ 
	int number_len; 
	int i; 
	number_len = num_len(number); 
	
	for(i = 0; i < number_len; i++) 
	{ 
		number_data[number_len-i-1] = (number % 10); 
		number /= 10; 
	} 
}
}}}

{{{~cpp 
// 일천사 -> 천사 되게 ver.2, + 리펙토링.. 
//아직 미완성

#include <stdio.h>   

int num_len(int number);   
void number_data_input(int number, int *number_data); 
void print_num_korean(char *korean_data, int *number_data, int i);
void print_num_position(char *num_position, int number_len, int i);

void main()   
{   
	int number, number_len, i = 0;  
	int number_data[10];  
	char korean_data[20] = "일이삼사오육칠팔구";   
	char num_position[15] = "  십백천만";  //<-사실 여기도 그냥 "십백천만"이라고 해도 된다.  
	
	while(1)  
	{  
		i = 0;  
		printf("끝내려면 0n");  
		scanf("%d", &number);  
		if(number == 0)  
			break;  
		
		number_len = num_len(number);                     
		number_data_input(number, number_data);  
		
		//print 
		while(i < number_len)  
		{  
			if(number_data[i] == 0) 
			{ 
			}else if(number_data[i] == 1 && number != 1)
			{
				if(i != (number_len-1))
				{
					print_num_position(num_position, number_len, i);
				}else
				{
					print_num_korean(korean_data, number_data, i);
					print_num_position(num_position, number_len, i);
				}
			}else{
				print_num_korean(korean_data, number_data, i);
				print_num_position(num_position, number_len, i);
			} 
			i++;  
		} 
		printf("n");  
	}   
}   

int num_len(int number)   
{   
	int lengh = 1;  
	while(number > 9)  
	{  
		++lengh;  
		number /= 10;  
	}  
	return lengh;  
}  

void number_data_input(int number, int *number_data)  
{  
	int number_len;  
	int i;  
	number_len = num_len(number);  
	
	for(i = 0; i < number_len; i++)  
	{  
		number_data[number_len-i-1] = (number % 10);  
		number /= 10;  
	}  
} 

void print_num_korean(char *korean_data, int *number_data, int i)
{
	printf("%c", korean_data[2*number_data[i] - 2]);  
	printf("%c", korean_data[2*number_data[i] - 1] );
}

void print_num_position(char *num_position, int number_len, int i)
{
	printf("%c", num_position[2*(number_len - i - 1)]);  
	printf("%c", num_position[2*(number_len - i - 1)+1]);
}

//void print_result(char korean_data[20], int number_data[10], 
}}}
=== 나한테 할 말 ===

흠.. 진트껄 0넣으면 안된다구 구박했건만.. 여기눙 0넣으면 끝나게 하다닛..ㅎ 이런 쌘스쟁이.ㅎ
음. 중간에 변수명 오타 고쳐놔뜸.ㅎ 
그리고..
{{{~cpp 
num_position[15] = "  십백천만";

printf("%c", num_position[2*(number_len - i - 1)]);  
printf("%c", num_position[2*(number_len - i - 1)+1]);
}}}
이런고.. 출력할때 고생하지말궁..

{{{~cpp 
num_position[5][3] = {"","십","백","천","만"};

printf("%s", num_position[number_len - i - 1]);  
}}}
이렇게 편하게 해.ㅎ 4byte 안아껴두 된다구~ㅎ 메모리 남아돌앙.ㅎ 저거 소스가 용량 더먹게땁.ㅎ

어쨋든 매번 열심힌걸..;;ㅁ;; 조케따~
아우..안그래도 게을러서 안하는딩.. 일도 많아서 클나떵.ㅎ
아영이 반에 반만이라도 닮아야 할텐딩.ㅎ 모.. 이뿌게 리펙토링하공~
매번 문제내느라 수고하넹.ㅎ 고생혀~ 그럼 좋은하루.ㅎ - [조현태]

{{{
완전 재밌다. 
근데 메인이 좀 길어서 보기 안좋은 거 같은데, 변수를 넘기는게 ..흐음 ㅋㅋ
리펙토링 하지않고 올린다.  
}}}
 - 리팩토링은 프로그램을 완성한 후에 하는것이 아니라 프로그래밍을 하는 도중에 하는게 더 좋다고 생각합니다. - 임인택
----
[LittleAOI] [숫자를한글로바꾸기]
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0087 sec