문자열을 입력받고 알파벳 각각의 개수를 세어서 a~z, A~Z순으로 출력하라. 문자열은 스페이스 포함 100칸 이내이다. 단, 개수가 0인것은 출력하지 않는다.
이 문제를 풀기위해, 캐릭터 변수를 정수로 변환하여 사용할 것이다.
캐릭터 변수는 고유의 아스키 코드값을 가지고 있다.
정수로 변환은 (int)로 캐스팅을 할수도 있고, 그냥 정수와의 연산을 해도 자동으로 캐스팅 된다.
정수를 이용해 특정한 아스키 코드를 가진 캐릭터 변수를 생성할때는 char(67)과 같
은 방식을 사용한다. char(67)은 C이다.
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
char a;
int b[52]={0,},i;
while(cin>>a){
if(64<a&&a<=90)b[a-65]++;//A~Z
else if(96<a&&a<=122)b[a-71]++; //a~z->26~51
}
for(i=26;i<52;i++)if(b[i]!=0)cout<<char(i+71)<<" = "<<b[i]<<endl;
for(i=0;i<26;i++)if(b[i]!=0)cout<<char(i+65)<<" = "<<b[i]<<endl;
system("PAUSE");
return 0;
}
실행결과
hello everyone, my name is hyeon and I am noob.
^Z
a = 3
b = 1
d = 1
e = 6
h = 2
i = 1
l = 2
m = 3
n = 5
o = 5
r = 1
s = 1
v = 1
y = 3
I = 1
Press any key to continue . . .
이 문제를 풀기위해, 캐릭터 변수를 정수로 변환하여 사용할 것이다.
캐릭터 변수는 고유의 아스키 코드값을 가지고 있다.
정수로 변환은 (int)로 캐스팅을 할수도 있고, 그냥 정수와의 연산을 해도 자동으로 캐스팅 된다.
정수를 이용해 특정한 아스키 코드를 가진 캐릭터 변수를 생성할때는 char(67)과 같
은 방식을 사용한다. char(67)은 C이다.
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
char a;
int b[52]={0,},i;
while(cin>>a){
if(64<a&&a<=90)b[a-65]++;//A~Z
else if(96<a&&a<=122)b[a-71]++; //a~z->26~51
}
for(i=26;i<52;i++)if(b[i]!=0)cout<<char(i+71)<<" = "<<b[i]<<endl;
for(i=0;i<26;i++)if(b[i]!=0)cout<<char(i+65)<<" = "<<b[i]<<endl;
system("PAUSE");
return 0;
}
실행결과
hello everyone, my name is hyeon and I am noob.
^Z
a = 3
b = 1
d = 1
e = 6
h = 2
i = 1
l = 2
m = 3
n = 5
o = 5
r = 1
s = 1
v = 1
y = 3
I = 1
Press any key to continue . . .
댓글
댓글 쓰기