ITGenerations
[c++] 영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 블라블라 본문
영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 집계하며, 텍스트 입력의 끝은 ';' 문자로 한다.
[코드는 다른 분이 작성한 걸 긁어 왔고, 주석추가와 간단한 마무리만 했습니다.]
http://blog.naver.com/hann0621/30187052881
코드 주인
#include<iostream>
using namespace std;
#define ALPHA_NO 26
#define MAX_LENGTH 10000
int main()
{
//변수 선언
char text[MAX_LENGTH];
int histo[ALPHA_NO] = { 0 };
int i = 0;
int a = 0;
int sum = 0;
cout << "영문 텍스트를 입력하세요. 히스토그램을 그립니다." << endl
<< "텍스트의 끝은 ; 입니다. 10000개까지 가능합니다." << endl;
//아래는 테스트 할 문장들
//Wise men say, only fools rush in
//But I can't help, falling in love with you
//Shall I stay? Would it be a sin?
//If I can't help, falling in love with you
//Like a river flows, surely to the sea
//Dearling so it goes, some things aren't meant to be;
//전체 문장 입력, ';'로 입력 종료
cin.getline(text, MAX_LENGTH, ';');
//전체 문자열 길이 측정
int len = strlen(text);
//전체 문자열 크기 만큼 대소문자 확인과 알파벳인지 검사
for (i = 0; i < len; i++)
{
if (isalpha(text[i])) { //알파벳인지 검사 //텍스트의 현재 값 i가 넘어감
char c = tolower(text[i]); //문자를 소문자로 전환 //대문자 전환은 upper
histo[c - 'a']++; //소문자 기준으로 되어 있으니 'a', 문자열 카운트
}
}
// 전체 문자열 수 확인.
for (a = 0; a<ALPHA_NO; a++)
{
sum += histo[a]; //전체 입력 히스토 합산
}
cout << "총 알파벳 수 " << sum << endl; //출력
for (i = 0; i<ALPHA_NO; i++)
{
cout.put('a' + i);
cout << " (" << histo[i] << ") : ";
for (a = 0; a<histo[i]; a++)
cout << "*";
cout << endl;
}
return 0;
}
'프로그래밍 > c++ 명품프로그래밍 ' 카테고리의 다른 글
[c++] p144. n2. 날짜를 다루는 Date 클래스를 작성하고자 한다. ~ (0) | 2017.11.23 |
---|---|
[c++] p143/1. main()의 실행 결과가 다음과 같도록 Tower 클래스를 작성하라 (0) | 2017.11.22 |
[c++] c프로그램을 c++로 수정 2 (0) | 2017.11.12 |
[c++] c프로그램을 c++프로그램으로 수정 (0) | 2017.11.12 |
[c++] 문자열을 하나 입력받고 문자열의 부분 문자열을 다음과 같이 출력하는 프로그램을 작성하라 (0) | 2017.11.12 |