목적
- 문자열을 동적 할당으로 입력받아 자소를 비교 한다.
문제
#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 는 소문자로 일괄적으로 비교하여 비교하게 했습니다.
참고
- 유사 문제 검색