Исправить ошибки в программе частотного анализа текста - C (СИ)
Формулировка задачи:
Здравствуйте , я студент, пытаюсь написать программу по следующему заданию:
5. Дан файл, содержащий текст. Провести частотный анализ текста, т. е. указать (в процентах), сколько раз встречается та или иная буква
код написал по всем методическим указанием, но выбивает много ошибок, помогите исправить , буду очень благодарен
вот мой код:
#include "stdio.h" #include "stdlib.h" #include "conio.h" #include <string.h> #include <locale.h> #include <Windows.h> void find(FILE*, char*); int main() char name[50]; int len; FILE *fp; setlocale (LC_ALL, "Rus"); if(argc<2){ printf("Введите имя файла без розширения (розширение файла должно быть .txt)\n"); exit(NULL); } strcpy(name,argv[1]); strcat(name,".txt"); if(!fopen (name,"r")){ printf("Файл невозможно открыть. Повторите заново!"); exit(NULL); } fp=fopen (name,"r"); len=filelength(fileno(fp)); //количество символов в файле if(!len){ printf("Файл пустой! Проверьте содержание файла\n"); exit(NULL); } printf("Указать (в процентах), сколько раз встречается та или иная буква.\n"); find(fp,name); fclose (fp); return 0; } void find(FILE *fp, char name[]) { int i,j,m; FILE *Out; float len; char name1[50]; char eng[]={"abcdefghijklmnopqrstuvwxyz"}; char ENG[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; char rus[]={"абвгдеёжзийклмнопрстуфхцчшщъыьэюя"}; char RUS[]={"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"}; int numben[2][27]; int numbru[2][33]; char ch; len=filelength(fileno(fp)); len=len/100; for(i=0;i<2;i++){ for(j=0;j<26;j++){ numben[i][j]=0; } } for(i=0;i<2;i++){ for(j=0;j<33;j++){ numbru[i][j]=0; } } for(i=0;i<50;i++){ if(name[i]=='.'){ name1[i]=NULL; break; } name1[i]=name[i]; } strcat(name1,".out"); Out = fopen(name1,"w"); printf("Латинница\n"); for(i=0;i<26;i++){ rewind(fp); /// функция rewind() выполняет "перемотку" (rewind) файла while(!feof(fp)){ ch=fgetc(fp); if(ferror(fp)); { perror(" Ошибка при работе с файлом "); } if(eng[i]==ch){ numben[0][i]++; } if(ENG[i]==ch){ numben[1][i]++; } } printf("%c:%f%%",eng[i],(float)(numben[0][i]/len)); fprintf(Out,"%c:%f%%",eng[i],(float)(numben[0][i]/len)); printf(" %c:%f%%\n",ENG[i],(float)(numben[1][i]/len)); fprintf(Out, "%c:%f%%\n",ENG[i],(float)(numben[1][i]/len)); } printf("Кириллица\n"); for(i=0;i<33;i++){ rewind(fp); while(!feof(fp)){ ch=fgetc(fp); if(ferror(fp)); { m = (ferror(fp)); perror(" Ошибка при работе с файлом "); } if(rus[i]==ch){ numbru[0][i]++; } if(RUS[i]==ch){ numbru[1][i]++; } } printf("%c:%f%%",rus[i],(float)(numbru[0][i]/len)); fprintf(Out,"%c:%f%%",rus[i],(float)(numbru[0][i]/len)); printf(" %c:%f%%\n",RUS[i],(float)(numbru[1][i]/len)); fprintf(Out," %c:%f%%\n",RUS[i],(float)(numbru[1][i]/len)); } } } }
Решение задачи: «Исправить ошибки в программе частотного анализа текста»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д