Дан файл, содержащий текст. Провести частотный анализ текста - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Умоляю помогите!! я вообще не знаю как ее делать... а очень нужно на си 5. Дан файл, содержащий текст.Провести частотный анализ текста, т. е. указать (в процентах), сколько раз встречается та или иная буква. Или хотя бы как она должна вообще выглядит???

Решение задачи: «Дан файл, содержащий текст. Провести частотный анализ текста»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
 
void main () {
 char fname[80];
 puts ("File name?");
 gets (fname);
 FILE *fp = fopen (fname,"r");
 if (fp==NULL) {
  puts ("Can't open this file");
  getchar();
  exit(1);
 }
 int ch;
 static long int ascii[256],all;
 while (1) {
  ch=fgetc(fp);
  if (feof(fp)) break;
  ascii[(int)ch]++;
  all++;
 }
 printf ("\nTable\n");
 for (int i=0; i<256; i++) {
  if (i%10==0) printf ("\n");
  if (i<32) printf ("%d:",i%10); //непечатаемые символы с кодами 0..31 не выводим
  else printf ("%c:",i);
  printf ("%4.1f ",(float)ascii[i]/all*100.);
 }
 fflush(stdin); getchar();
 fclose (fp);
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и стандартным вводом-выводом
  2. Запрос на ввод имени файла и сохранение его в переменную fname
  3. Открытие файла с помощью функции fopen и проверка на успешное открытие, иначе выводится сообщение об ошибке и программа завершается
  4. Объявление переменной ch для хранения очередного символа из файла
  5. Объявление статической переменной ascii[256] для хранения количества вхождений каждого символа
  6. Объявление переменной all для хранения общего количества символов в файле
  7. Бесконечный цикл, который прерывается при достижении конца файла (feof(fp))
  8. Увеличение счетчика ascii[(int)ch] для соответствующего символа
  9. Увеличение счетчика all на каждый символ
  10. Вывод таблицы с помощью функции printf
  11. Отображение каждой строки таблицы с помощью оператора \n
  12. Проверка, является ли текущий символ непечатаемым (код от 0 до 31), если да, то вывод его кода
  13. Вывод процентного соотношения вхождений текущего символа от общего количества символов в файле
  14. Завершение работы с файлом с помощью функции fclose
  15. Очистка буфера ввода с помощью функции fflush и получение символа из стандартного ввода с помощью функции getchar

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы