IT’s Portfolio

[C] 알고리즘 - 문장의 알파벳 빈도수 계산하기 본문

Development Study/C

[C] 알고리즘 - 문장의 알파벳 빈도수 계산하기

f1r3_r41n 2020. 6. 26. 11:26
728x90
반응형

* 조건 *

① 입력되는 문장의 최대 길이 : 1024

② 대소문자 상관없이 빈도 계산 => a와 A가 문장에 포함되어 있다면 알파벳 a의 빈도수는 2가 된다.

③ 공백과 특수기호 무시

④ 배열을 이용해 빈도수를 기록하고, 입력된 문자열로부터 빈도수를 계산하는 함수를 직접 구현

 

#include <stdio.h>

int* calFrequency(char data[]) {
	// 소문자
	int s = 97;
	// 대문자
	int b = 65;

	// 알파벳 개수 처리 배열
	static int output[26] = { 0, };

	for (int i = 0; i < 1024*sizeof(char); i++) {
		// A~Z, a~z까지 반복
		for (int j = 0; j < 26; j++) {
			// data의 문자와 해당 문자가 같으면 output 1 증가
			if (data[i] == (char)(s + j) || data[i] == (char)(b + j)) {
				output[j]++;
				break;
			}
		}
	}

	return output;
}

void main() {
	char input[1024*sizeof(char)];
	int j = 97;

	printf("input a string\n");
	// scanf_s 함수는 뒤에 배열의 크기까지 같이 써줘야지 값을 입력할 수 있음.
	// %[^\n] : \n 엔터를 제외한 모든 문자열을 받는다.
	scanf_s("%[^\n]", input, 1024*sizeof(char));

	int* fre = calFrequency(input);

	printf("\n[Frequency]\n");
	for (int i = 0; i < 26; i++) {
		printf("%c:%d\n", (char)j, fre[i]);
		j += 1;
	}

	printf("\nBye!\n");
}

 

실행

728x90
반응형
Comments