반응형

4.10> 영문자로 구성된 텍스트에 대해 각 알파벳에 해당하는 문자가 몇 개인지 출력하는 히스토그램 클래스 Histogram을 만들어보자. 대문자는 모두 소문자로 변환하여 처리한다. Histogram 클래스를 활용하는 사례와 실행 결과는 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <algorithm> //transform 함수 사용 위함
#include <string>
 
using namespace std;
 
class Histogram{
private:
    string s; //스트링 저장용
public:
    Histogram(string s){(this->s)+=s;} //생성자는 멤버스트링 s에 매개스트링 s를 더한다.
    void put(string s){(this->s)+=s;} //멤버스트링 s에 매개스트링 s를 더한다.
    void putc(char c){(this->s)=s+c;} //멤버스트링 s에 매개 캐릭터 c를 더한다.
    void print(){
        cout<<s<<endl//소문자화 하기전 출력
        transform(s.begin(),s.end(),s.begin(),tolower); //스트링 s를 전부 소문자화 시킴
        cout<<s<<endl//소문자화 한 후 출력
        for(int i=0;i<26;i++){ //알파벳이 26자라서 26번 돌린다.
            int count=0//알파벳 몇번 나왔나 셀 때 사용할 변수
            for(int k=0;k<s.size();k++){ //스트링 전부 순회
                if(s[k]==(i+97)) //아스키코드 97이 'a'라서 97~97+26 은 'a'~'z'를 의미한다. s의 각 문자를 'a'~'z'와 비교
                    count++//만약 s[k]가 i+97과 같으면 count 증가
            }
            cout<<(char)(i+97)<<" ("<<count<<")    :    "//출력
 
            for(int j=0;j<count;j++//count 수만큼 별 출력
                {cout<<"*";}
            cout<<endl//한줄 내린다.
        }
    }
};
 
int main(void){
    Histogram elvisHisto("Wise men say, only fools rush in But I can't help, ");
    elvisHisto.put("falling in love with you");
    elvisHisto.putc('-');
    elvisHisto.put("Elvis Presley");
    elvisHisto.print();
    return 0;
}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C++' 카테고리의 다른 글

변수와 포인터와 참조  (0) 2017.11.08
float와 double  (0) 2017.11.05
Circle, CircleManager 클래스  (0) 2017.11.03
Person, Family 클래스  (0) 2017.11.03
원의 개수와 반지름  (0) 2017.11.03
반응형

사용자로부터 문자를 입력받아서 그 문자의 아스키 코드값을 출력하는 프로그램을 작성하라.

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main(void)
{
char a;
printf("문자를 입력하시오: ");
a=getchar();
printf("아스키코드값=%d\n", a);
return 0;
}
cs



반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

문자열 속의 문자 개수 세기  (4) 2016.08.19
공백 제거  (0) 2016.08.19
대문자 변환기  (0) 2016.08.19
배열 합치기  (0) 2016.08.16
최대공약수와 최소공배수  (0) 2016.08.15

+ Recent posts