-
명품 C++ 2장 16번C++ 2018. 10. 28. 03:00
16. 영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 집계하며, 텍스트 입력의 끝은 ';' 문자로 한다.
소스코드
#include <iostream>#include <cstring>using namespace std;int main() {int num = 0;int alphabet[27] = { 0 };cout << "영문 텍스트를 입력하세요. 히스토그램을 그립니다.\n";cout << "텍스트의 끝은 ; 입니다. 10000개까지 가능합니다.\n";char alpha[10000];cin.getline(alpha, 10000, ';');for (int i = 0; i<strlen(alpha); ++i) {if (isalpha(tolower(alpha[i])) != 0) {++alphabet[alpha[i] - 97];++num;}}cout << "총 알파벳 수 " << num << endl;for (int i = 0; i < 26; ++i) {char asc = i + 'a';cout << asc << "(" << alphabet[i] << ")";for (int j = 0; j <4 - alphabet[i] / 10; ++j)cout << " ";cout << ": ";for (int j = 1; j <= alphabet[i]; ++j)cout << "*";cout << endl;}}실행결과
isalpha(char c)는 알파벳인지 아닌지 확인해주는 함수입니다. 알파벳이면 !=0, 알파벳이 아니라면 ==0 입니다.
tolower(char c)는 대문자를 소문자로 바꿔주는 함수입니다.
ahphabet 라는 배열에는 각 알파벳이 몇 개인지 저장합니다.
isalpha 함수에 대한 정보 출처 : http://forum.falinux.com/zbxe/index.php?document_srl=520891&mid=C_LIB
'C++' 카테고리의 다른 글
명품 C++ 3장 1번 (0) 2018.10.28 명품 C++ 2장 Open Challenge (0) 2018.10.28 명품 C++ 2장 15번 (1) 2018.10.28 명품 C++ 2장 14번 (0) 2018.10.28 명품 C++ 2장 13번 (0) 2018.10.28