HansJack

HansJack

p124配列の例:文字の出現回数の統計

p124 配列の例:アルファベットの出現回数の統計#

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <limits.h>
#include <ctype.h>

#define LETTER_COUNT 26

int main(void)
{
    uint32_t frequency[LETTER_COUNT] = { 0 };

    char text[] = "頻度分析のための例文。\0";

    // 各アルファベットの出現回数をカウント
    for (uint32_t i = 0; text[i] != '\0'; i++)
    {
        char ch = tolower(text[i]);

        if (ch >= 'a' && ch <= 'z') {
            frequency[ch - 'a']++;
        }
    }

    puts("文字の頻度:\n");
    for (int i = 0; i < LETTER_COUNT; i++) {
        if (frequency[i] > 0) {
        printf("'%c': %d\n", 'a' + i, frequency[i]); 
        }
    }
    return 0;
}

強化後

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <limits.h>
#include <ctype.h>
#include <string.h>  // strcspn関数を含む

#define LETTER_COUNT 26
#define MAX_TEXT_LENGTH 256  // 最大入力長を定義

int main(void)
{
	uint32_t frequency[LETTER_COUNT] = { 0 };

	char text[MAX_TEXT_LENGTH];  // ユーザー入力のテキストを格納するため

	//char text[] = "頻度分析のための例文。\0";
	printf("テキストを入力してください: ");
	fgets(text, sizeof(text), stdin);  // fgetsを使用して1行のテキストを読み込む

	//改行文字を処理
	text[strcspn(text, "\n")] = '\0';  // 改行文字を文字列の終端文字に置き換える


	//各アルファベットの出現回数をカウント
	for (uint32_t i = 0; text[i] != '\0'; i++)
	{
		char ch = tolower(text[i]);

		if (ch >= 'a' && ch <= 'z') {
			frequency[ch - 'a']++;
		}
	}
	puts("文字の頻度:\n");
	for (int i = 0; i < LETTER_COUNT; i++) {
		if (frequency[i] > 0) {
			printf("'%c': %d\n", 'a' + i, frequency[i]);
		}
	}
	return 0;
}

image-20241025223719918 

この記事は Mix Space によって xLog に同期更新されました
元のリンクは https://hansblog.top/posts/study-book/c-p124


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。