Задача состоит в том, чтобы напечатать (заданный текстовый файл) встречающиеся латинские символы, используя таблицу частот (без различия между заглавными и строчными буквами), в файл f1. Таблица должна быть отсортирована по алфавиту.
Пока что моя программа считает только букву А. У меня проблемы с созданием циклов, которые проходят по всему алфавиту и распечатывают таблицу в другой файл, не могли бы вы помочь мне с этим?
#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 %s\n", 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 %d\n", FILE_NAME, count);
char cMyCharacter = 'A';
int iMyAsciiValue = (int)cMyCharacter;
cout << iMyAsciiValue;
system("Pause");
fclose(in_file);
return 1;
}
Во-первых, получить массив размером 26 для частот от а до я
int freq[26] = {0};
freq[0]
для’, freq[1]
для «б» и т. д.
Во-вторых, изменить
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')
для заглавных букв и соответственно измените последующие коды.
Это ваша домашняя работа, вы должны попытаться выяснить всю программу самостоятельно. Я надеюсь, что этот ответ даст вам достаточно подсказок.
Других решений пока нет …