소프트웨어/C++

[2005년 기말 7번] 자소 분석 - 문자열 제어

카켈 2007. 3. 9. 21:20




목적
  - 문자열을 동적 할당으로 입력받아 자소를 비교 한다.

문제

코드

#include <iostream>
#include <cstring>
#include <ctype.h>

using namespace std;

int main(void)

{
 char sIn[255] = {0};
 int i, iAlpha, iSpace, iSpecial, iMoum;
 i = iAlpha = iSpace = iSpecial = iMoum = 0;
 char cBuf;
 char* sString = NULL;

 cout << "문자열 입력 : ";
 cin.getline(sIn,255);

 sString = new char[strlen(sIn) + 1];
 strcpy(sString, sIn);

 while(sString[i] != 0)
 {
  if(isalpha(sString[i]))
   iAlpha++;

  if(isspace(sString[i]))
   iSpace++;

  if(ispunct(sString[i]))
   iSpecial++;
 
  cBuf = tolower(sString[i]);

  if(cBuf == 'a' || cBuf == 'e' || cBuf == 'i' || cBuf == 'o'
   || cBuf == 'u')
   iMoum++;

  i++;

 }

 cout << "문자열의 길이 : " << strlen(sString) << endl;
 cout << "알파벳문자 개수 : " << iAlpha << endl;
 cout << "공백문자   개수 : " << iSpace << endl;
 cout << "특수문자   개수 : " << iSpecial << endl;
 cout << "모음의     개수 : " << iMoum << endl;

 return 0;
}



해설
  - 문자별료 배열 포인터를 지정 하여 자소별로 접근할수 있게 했습니다.
  - A E I O U / a e i o u 는 소문자로 일괄적으로 비교하여 비교하게 했습니다.

참고
  - 유사 문제 검색