U E D R , A S I H C RSS

로마숫�바꾸기/허아�

소�

완벽하다고 ìž�ë€í•œë‹¤. (소스ë§�구요 프로그램 출력..헤헤..^^)
왜�하면.. 예외처리(?)를 완벽하게, �시�으로 처리했기 때문�?!!
ë�•ë„ì—� 소스가 길어졌다.
로마숫�는 숫�를 길게 쓰지 않으려는 노력� ��� 보�지만 딱 꼬집어서 한가지로 �할 알고리즘� 없는것 같다.

소스

~cpp 
#include <stdio.h>
#include <string.h>

void input(int *number);
void operation(int number, char roma_data[3][4]);
void output(int number, char resultdata[20][4]);

void main()
{
	int number = 0;
	char roma_data[3][4] = {"â…©", "â… ", "â…¤"};
	while(1)
	{
		input(&number);
		if(number == 99)
			break;
		if(number > 99 || number <= 0)
		{
			printf("다시 입력해 주세요...n");
		}else
		{
			operation(number, roma_data);
		}
	}
}

void input(int *number)
{
	printf("숫�를 입력(종료:99) :");
	scanf("%d", number);
}

void operation(int number, char roma_data[3][4])
{
	int numberdata[5] = {0,};
	char resultdata[20][4] = {0,};
	int i = 0;
	numberdata[0] = number / 10;
	numberdata[1] = number % 10;
	
	while(numberdata[0] > 0)
	{
		strcpy(resultdata[i], roma_data[0]);
		++i;
		--numberdata[0];
	}
	if(numberdata[1] == 4 || numberdata[1] == 9)
	{
		strcpy(resultdata[i], roma_data[1]);
		++i;
		if(numberdata[1] == 4)
			strcpy(resultdata[i], roma_data[2]);
		else
			strcpy(resultdata[i], roma_data[0]);
		++i;
		numberdata[1] = 0;
	}else if(numberdata[1] >= 5)
	{
		strcpy(resultdata[i], roma_data[2]);
		numberdata[1] -= 5;
		++i;
	}
	while(numberdata[1] >= 1)
	{
		strcpy(resultdata[i], roma_data[1]);
		++i;
		--numberdata[1];
	}
	
	output(number, resultdata);
}

void output(int number, char resultdata[20][4])
{
	int i = 0;
	printf("%d : ", number);
	while(i < 18)
	{
		printf("%s", resultdata[i]);
		++i;
	}
	printf("n");
}

나한테 할 �


완벽하네..ㅎㅎ 사실 그렇게 길지� 않는�?ㅎ 한 1000�리쯤 가면 좀 길어질려나..ㅎㅎ 왠지 한 {}안� 내용� 비슷비슷해 보�기는 하지만.ㅎㅎ �..어디가 중복�지는 나� 모르겠..ㅎㅎ 그러니 나름대로 괜찮� 소스�고.. ㅎㅎ 그럼 좋�하루..(추신: 네 소스는 항� 테스트가 잘�.ㅎ) - 조현태
----
LittleAOI 로마숫�바꾸기
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:23
Processing time 0.0190 sec