Создание приложения "Подсчет частоты введенных слов в текстовом файле"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

? считанных слов

d=0; - счётчик количества слов

if (strcmp(words[j],prov)==0) {continue;} - условие проверяет соответствует ли слово из массива строк words[j] заранее заданной строке prov. Если данное условие выполняется, то цикл пропускает текущую итерации.

else { - если условие не выполняется, то следует выполнение данного оператора

strcpy(vyvod,words[j]); - в строку vyvod копируется строка words[j]. Далее эта строка будет сравнивать со строками из массива строк words и заносится в структуру CNT V как уникальная. Все повторные совпадения данного слова будут заменяться на значение строки prov ::null::. Напоминаю, что предыдущий цикл прерывает итерацию при встрече данного значения, что позволяет избежать подсчёта лишнего слова.

for(s=0;s!=*i;s++) { - цикл сравнения массива строк с заданной строкой vyvod

if (strcmp(vyvod,words[s])==0) {d++; strcpy(words[s],prov);}} - если слово встреченное в массиве строк words равно заданному слову, то происходит его затирание словом prov и инкрементирование счётчика

strcpy(V[q].word,vyvod); V[q].num=d; q++;}} - копирование заданного слова и количество его повторений в структуру STR V("\a\a\a"); - 3 звуковых сигнала по окончанию обработки

return q; - возвращение функцией значения q с типом int

}

void Delete(int*i) - прототип функции удаления из слов знаков препинания с параметром-указателем на переменную типа int

{

char spr[]="!:,.?;"; - объявление строковой переменной

int k,r,j,d; - объявление переменной с типом int

for(d=0;d!=*i;d++) { - цикл удаления знаков препинания из слов, проходит по всему массиву строк words

for(k=0;spr[k]!=\0;k++) { - цикл чтения знаков из заданной строки, работает до тех пор, пока не достигнет нуль-терминатора

for(r=j=0;words[d][r]!=\0;r++) - цикл сравнения символов из массива строк words со строкой spr

if (words[d][r]!=spr[k]) - условие проверяет совпадает ли данный символ с символом из строки spr, после чего сдвигает символы строки. На место совпавшего символа ставится нуль-терминатор

{words[d][j++]=words[d][r];}

words[d][j]=\0;}

}

}

void Output(CNT*V,int*i,int q) - прототип функции вывода результатов работы программы на экран с параметрами-указателями на структуру и переменными типа int

{

int j; - объявление переменной типа int

if (t!=1) { - проверка на заполнение массива строк

printf("Snachala nyjno prochitat fail\n");("Press any key to escape for menu");}{ - если условие не выполнено, то действует данный оператор

clrscr(); - очистка экрана

for(j=0;j!=q;j++) { - цикл вывода слов из структуры

printf("slovo %s - kol-vo: %d\n",V[j].word,V[j].num);}("Vsego slov - %d",*i);} - вывод количества всех слов

getch(); - ожидание нажатия клавиши

}

void Write(CNT*V,int*i,int q) - прототип функции записи в файл результатов работы программы с параметрами-указателями на структуру и переменными типа int

{

int j; - объявление переменной с типом int

char name[50]; - объявление строковой переменной

FILE *book; - объявление указателя на файл

clrscr(); - очистка экрана

if (t!=1) { - проверка условия на заполнения массива строк

printf("Snachala nyjno prochitat fail\n");("Press any key to escape for menu");}{("Vvedite nazvanie faila i put k nemy\n"); - вывод сообщения о вводе пути и названия файла("%s",&name); - ввод пути и названия файла

book=fopen(name,"wt"); - открытие файла в режиме записи

for(j=0;j!=q;j++) { - цикл записи результатов работы программы

fprintf(book,"slovo %s - kol-vo: %d\n",V[j].word,V[j].num);} - запись в файл(book,"Vsego slov - %d",*i); - запись общего количества слов в файл

fclose(book);} - закрытие файла

getch(); - ожидание нажатия клавиши

}

int main() - объявление главной функции

{

int w; - объявление переменной типа int

setlocale(LC_ALL,"Russian"); - подключение кириллицы в консоли

while(1){ - цикл с рекурсией

clrscr(); - очистка экрана

printf("=============================\n"); - вывод сообщения

printf(" Kursovoi proekt\n");

printf("Vypolnil student gryppy 12-94\n");(" Romanov A.S.\n");("=============================\n");

printf(" M E N U\n"); - вывод меню

printf("1:Read from file\n");("2:Rezult\n");("3:Write in file\n");("4:Exit\n");("%d",&w); - ввод значения w(w) { - оператор выбора1: Read(&e); Delete(&e); g=Scan(V,&e); break; - выполнение функций2: Output(V,&e,g); break;3: Write(V,&e,g); break;

case 4: exit(0);} - выход из программы

}

}

В программном коде использовано 6 функций(чтение из файла, обработка данных, занесение данных в структуру, вывод результата на экран, вывод результата в файл, меню в главной функции). Для работы программы необходим как минимум один файл - необходимо считать данные. Также есть возможно вывести результаты работы программы в тот же файл.

Для проверки разработанного приложения проведём тестирование её работы.

Все тесты были проведены на базе группы пользователей.

 

Тест №1

 

Проверка работы функции удаления знаков препинания из слов.

В качестве тестового текста возьмём следующие предложения(Рис №11):

 

Рис №11. Тест №1.

 

Исходя из заданного текста, можно предположить, что ожидаемым результатом работы программы будет вывод 3-х уникальных слов.

Проверка(Рис №12):

 

Рис №12. Тест №1.Проверка удаления знаков препинания

 

Как видно из скриншота консоли, программа полностью справилась с первым тестом.

Тест №2.

Проверка работы счётчика общего вхождения слов.

В качестве текста возьмём часть введения. Узнаем количество слов фрагмента при помощи Microsoft Word(Рис №13):

Рис №13. Тест №2. Подсчёт слов при помощи Microsoft Word 2010

 

Тест №2Поместим данный фрагмент в текстовый файл и сравним с результатом работы приложения(Рис №14):

 

Рис №14. Тест №2.Проверка подсчёта общего количества слов

 

Результаты показывают, что программа справилась со вт?/p>