컴공생의 다이어리

[c++] 입력받은 문자열에서의 특정 문자 빈도 수 본문

Development/C & C++

[c++] 입력받은 문자열에서의 특정 문자 빈도 수

컴공 K 2021. 2. 13. 01:00

문제

문자열을 읽고 문자의 빈도를 계산하는 프로그램을 작성하시오. 예를 들어, ALL이 총 문자 수이고 N가 문자 'a'의 수이면 문자 'a'의 빈도는 N / ALL 으로 계산할 수 있다. 입력 문자열은 대소 문자를 구분하지 않는다.

 

 

코드

#include<iostream>
#include<iomanip>
using namespace std;

int main(){
	char buf[50] = { 0, };		//문자열
	int count[26] = { 0 , };	//A ~ Z

	cout << "문자열 입력 : ";
	cin.getline(buf, sizeof(buf));

	char* p = buf;
	int len = 0;
	double rate;

	while (*p != '\0'){
		*p = toupper(*p); //대문자로 바꾸기
		if (*p >= 'A' && *p <= 'Z')
			count[*p - 'A']++;
		p++;
	}
	for (int i = 65; i <= 90; i++)
	{
		len += count[i - 'A'];
	}

	cout << "결과" << endl;
	for (int i = 0; i < 26; i++){
		rate = (double)count[i] / (double)len;
		if (count[i] != 0)
			cout << (char)('A' + i) << '(' << (char)('a' + i) << ") "
			<< fixed << setprecision(6) << rate << endl;
	}
	return 0;
}

 

 

출력결과

728x90
반응형
Comments