计算文件中字符的频率.C++

Counting the frequency of characters in a file. C++

本文关键字:频率 C++ 字符 文件 计算      更新时间:2023-10-16

任务是使用频率表(不区分大写和小写字母)打印(给定的文本文件)遇到的拉丁字符到文件 f1。表格必须按字母顺序排序。到目前为止,我的程序只计算字母 A。我在创建遍历整个字母表并将表格打印到另一个文件中的循环时遇到问题,你能帮我吗?

#include <stdio.h>
const char FILE_NAME[] = "yo.txt";
#include <stdlib.h> 
#include <iostream>
using namespace std;
int main() {
    int   count = 0;  /* number of characters seen */
    FILE  *in_file;    /* input file */
    /* character or EOF flag from input */
    int             ch;
    in_file = fopen(FILE_NAME, "r");
    if (in_file == NULL) {
        printf("Cannot open %sn", FILE_NAME);
        system("Pause");
        exit(8);
    }
    while (1) {
        char cMyCharacter = 'A';
        int value = (int)cMyCharacter;
        ch = fgetc(in_file);
        if (ch == EOF){
            break;
        }
        int file_character = (int) ch;
        if (file_character == value || file_character == value+ 32) {
             count++;
        }
    }
    printf("Number of characters in %s is %dn", FILE_NAME, count);
    char cMyCharacter = 'A';
    int iMyAsciiValue = (int)cMyCharacter;
    cout << iMyAsciiValue;
    system("Pause");
    fclose(in_file);
    return 1;
}

首先,获取一个大小为 26 的数组,频率为 a 到 z

int freq[26] = {0};

freq[0]代表"a",freq[1]代表"b"等。

二、改变

if (file_character == value || file_character == value+ 32)

if (file_character >= 'a' && file_character <= 'z')

对于所有小写字母(即"a"到"z")。

第三,获取索引并按计数方式

freq[file_character - 'a']++;

file_character - 'a'计算索引,其余的计算。

第四,打印freq数组。

第五,添加

else if (file_character >= 'A' && file_character <= 'Z')

对于大写字符,并相应地更改后续代码。

这是你的功课,你应该尝试自己弄清楚整个程序。希望这个回答能给你足够的提示。