ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 4장 13번
    C++ 2018. 10. 30. 02:02

    13. 영문자로 구성된 텍스트에 대해 각 알파벳에 해당하는 문자가 몇 개이지 출력하는 히스토그램 클래스 Histogram을 만들어보자. 대문자는 모두 소문자로 변환하여 처리한다.

    Histogram 클래스를 활용하는 사례와 실행 결과는 다음과 같다.


    소스코드


    #include <iostream>
    using namespace std;
    #include <string>
    class Histogram {
        string text;
    public:
        Histogram(string text);
        void put(string text);
        void putc(char c);
        void print();
    };
    Histogram::Histogram(string text) {
        this->text = text;
        cout << text << endl;;
    }
    void Histogram::put(string text) {
        this->text += text;
        cout << text;
    }
    void Histogram::putc(char c) {
        text += c;
        cout << c;
    }
    void Histogram::print() {
        int num = 0;
        int alphabet[26] = { 0 };
        for (int i = 0; i < text.length(); ++i) {
            if (isalpha(tolower(text[i])) != 0) {
                ++num;
                alphabet[(int)(tolower(text[i]) - 97)]++;
            }
        }
        cout << endl << endl;
        cout << "총 알파벳 수 " << num;
        cout << endl << endl;
        for (int i = 0; i < 26; ++i) {
            char c = 'a' + i;
            cout << c << " (" << alphabet[i] << ")\t: ";
            for (int j = 0; j < alphabet[i]; ++j) {
                cout << "*";
            }
            cout << endl;
        }
    }
    int main() {
        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();
    }


    실행결과



    2장 12번 문제를 string 클래스를 사용하여 푸는 문제입니다.

    'C++' 카테고리의 다른 글

    명품 C++ 4장 Open Challenge  (3) 2018.10.30
    명품 C++ 4장 14번  (1) 2018.10.30
    명품 C++ 4장 12번  (0) 2018.10.30
    명품 C++ 4장 11번  (0) 2018.10.30
    명품 C++ 4장 10번  (0) 2018.10.30

    댓글

© 2018 TISTORY. All rights reserved.