목적
  - 문자열을 이해하여 정확한 출력을 할줄 안다.

문제
사용자 삽입 이미지

코드

#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 에서는 쉼표 숫자 입력을 함수로 이용 하여 계산할수 있습니다.

예제 코드

    Value = Val(Format("1,234", "####")) + 11
    MsgBox Format(Value, "#,###")


사용자 삽입 이미지

출력 화면, 엑셀의 VBA 를 이용했습니다.
Posted by 카켈