목적
- 문자열을 이해하여 정확한 출력을 할줄 안다.
문제
코드
#include <iostream>
using namespace std;
bool isComma(char* aIn)
{
while(*aIn != 0)
{
if( *aIn == ',')
return true;
aIn++;
}
return false;
}
void vPrint_Num(char* aIn)
{
int i = 0;
if(isComma(aIn))
{
i = 0;
while(aIn[i] != 0)
{
if(aIn[i] != ',') cout << aIn[i];
i++;
}
}
else
{
i = strlen(aIn);
while(i > 0)
{
if(i % 3 == 0) cout << ','; // 글자를 찍기전에 남은 표시 자리수가 3의 배수이면 쉼표 출력
cout << aIn[strlen(aIn) - i];
i--;
}
}
}
int main(void)
{
char sIn[255] = {0};
int i = 0;
cout << "콤마(,)로 구분하여 1000보다 큰 수 입력 : ";
cin >> sIn;
cout << "입력한 수 : ";
vPrint_Num(sIn);
cout << endl << endl << "정수를 입력하세요 : ";
cin >> sIn;
vPrint_Num(sIn);
cout << endl;
return 0;
}
해설
- bool isComma(char*) 함수는 문자열을 받아서 그 중에 쉼표가 있으면 true 를 없다면 false 를 반환합니다.
- 쉼표를 만들어 출력하는 내용은 주석을 참조 하시기 바랍니다. (방향이 반대로 시작하되 출력은 정식으로 하여 쉼표 출력을 위한 자릿수를 맞춤니다.
참고
- 유사 문제
- Visual basic 에서는 쉼표 숫자 입력을 함수로 이용 하여 계산할수 있습니다.
예제 코드
MsgBox Format(Value, "#,###")