Создание приложения "Подсчет частоты введенных слов в текстовом файле"
Отличие исконных слов от заимствованных и установление времени, причины заимствований и их роль для развития языка. Алгоритм подсчета обработанных слов приложением "Подсчет частоты введенных слов в текстовом файле". Отладка и тестирование программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.06.2012 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Оглавление
Введение
Анализ предметной области
Проектирование
Блок-схемы
Отладка и тестирование
Сопровождение
Заключение
Список литературы
Приложение
Введение
В настоящее время человечество является высокоразвитым обществом с множеством технологий упрощающими жизнь в той или иной степени. Перед обществом, как и раньше, могут встать различные важные проблемы, для решения которых необходим сбор статистических данных (например, социологических опрос).
Статистическое исследование, как и любое другое исследование, может играть очень важную роль в науке или в какой-либо другой области. Статистическое исследование позволяет людям предусмотреть возможные разрешения различных ситуаций, возможно даже, на основе предыдущих исследований.
С помощью его можно решать очень большой круг вопросов и задач, анализируя полученные данные и давая конкретные рекомендации для разрешения проблемы.
Таким образом, роль социологического исследования в процессе изучения общества трудно переоценить, поэтому именно оно и будет рассмотрено в данной курсовой работе на примере разработки приложения «Подсчет частоты введенных слов в текстовом файле».
Данная программа может использоваться в филологических исследованиях текстов больших объемов. С её помощью можно узнать, как часто применяется то или иное слово в тексте, таким образом составляя статистику использования того или иного слова. Таким образом, программе можно найти применение в области лексической семантики.
Одна из целей исторического метода лексической семантики отличить исконные слова от заимствованных и установить время, причину заимствований и их роль для развития данного языка. С синхронической точки зрения для многих слов это сделать довольно трудно, а часто и невозможно, тогда как при историческом подходе генетическая связь между родственными словами, а также источник заимствований чужих слов и выражений становятся очевидными и аргументированными. Одним из важных критериев древности слова служит частота его использования в языке: чем чаще слово, тем оно древнее.
Согласно некоторым исследования при чтении, правильно выбрав и хорошо запомнив около 80 наиболее обычных, самых частотных слов, можно понять около 50% простого текста;
- 200 слов покроют примерно 60%;
- 300 слов - 65%;
- 400 слов - 70%;
- 800 слов - примерно 80%;
- 1500 - 2000 слов - около 90%;
- и 8000 слов покроют практически около 99 процентов письменного текста.
Очевидно, что статистику собранную программой для каждого конкретного текста можно применить в соответствии с результатами исследований.
Для реализации поставленной цели можно выделить несколько пунктов:
1)Выделить возможные области применения приложения и разобраться в возможных аспектах и особенностях найденных областей применения;
2)Составить алгоритм работы приложения;
3)Разработать приложение на языке программирования Си;
4)Протестировать приложение;
5)Устранить возможные ошибки в работе приложения;
6)Составить описание работы с приложением для пользователей.
Разбор областей применения приводится в разделе «Анализ предметной области», алгоритм работы приложения представлен в виде блок-схем функций программы. По третьему пункту приводится исходный код программы с подробными комментариями. Тестирование приложения представлено в виде скриншотов консоли и содержимого текстовых документов.
После тестирования приводится подробная инструкция работы с консольным приложением для пользователей.
Финальный вариант приложения предназначен для людей, работающих в лингвистических и филологических направлениях.
В работе использовано 4-ре источника литературы, основным из них является «Программирование на языке Си» (Подбельский В.В., Фомин С.С. 2004. - 600 с.: ил)
Работа состоит из 4-х частей.
В первой части производится анализ предметной области;
Во второй описывается проектирование приложения;
В третьей приводятся результаты тестирования приложения;
В четвёртой части находится описание работы с приложением.
Анализ предметной области
При анализе данной области было выделено 3 возможных варианта приложений, с помощью которых можно реализовать полностью или частично поставленные задачи.
Сначала рассмотрим варианты приложений с частичной возможностью реализации поставленной задачи:
1)Любой текстовый редактор с функцией поиска по словам.
Примером данного приложения может служить «Microsoft Word 2010»(Рис №1)
Рис №1. Окно поиска «Microsoft Word 2010»
Из минусов данного решения можно отметить, что данный способ является очень затратным по времени, так как одновременно можно получить частоту только для одного слова.
2)Браузер со встроенной поддержкой поиска на странице.
В качестве примера рассмотрим браузер «Google Chrome»(Рис №2)
Рис №2. Окно поиска «Google Chrome»
Минусами такого способа являются:
· Поиск только по одному слову одновременно;
· Необходимость переноса текста в txt- или html-формат;
· Поиск лишь по буквенным сочетаниям.
В качестве примера приложения, на котором можно реализовать поставленные задачи полностью рассмотрим «LitFrequencyMeter»(Рис №3,№4,№5):
Данная программа позволяет определить число слов и знаков в тексте, сделать выборку для анализа, исключив отдельные знаки и союзы, и определить число выбранных для анализа слов и знаков, создать статистику, расположив слова и знаки в алфавитном порядке. Возможен также графический вывод статистики.
Рис №3. Интерфейс LitFrequencyMeter
Рис №4. Вывод статистики в LitFrequencyMeter
Рис №5. Графическое представление статистики в LitFrequencyMeter
В данной части производилось описание анализа предметной области, в результате было рассмотрено два варианта частичной реализации поставленной цели (а именно, приложения «Google Chrome» и «Microsoft Word 2010») и один вариант полностью соотвествующий исходным требованиям (приложение «LitFrequencyMeter»). Исходя из полученных результатов, можно сказать, что наиболее удобным для использования приложениея является «LitFrequencyMeter». Тем не менее, стоит отметить, что существует очень мало профессиональных решений послностью соотвествующих поставленной цели.
Проектирование
Для создания приложения «Подсчет частоты введенных слов в текстовом файле» была выбрана среда Dev-C++ 4.9.9.2.
Программу можно представить в виде схемы(Рис №6):
Рис №6.Схематическое представление программы.
На представленной выше схеме можно увидить поэтапную работу приложения. Обратите внимание на то, что загрузка текста в приложение является обязательным условием для его работы, так же из схемы видно, что результат работы программы можно вывести как в файл, так и в окно консоли.
Для того чтобы предоставить пользователю полное взаимодействие с программой необходимо реализовать меню, а также реализовать вывод ошибки при введении пути на несуществующий файл. Необходимо предусмотреть сигнальный вывод, при запросе пользователя на вывод результата работы программы при отсутствии обрабатываемого файла в памяти программы. Для удобства пользователя указывается полный путь к файлу.
Результат можно вывести как экран ПК, так и в отдельный текстовый файл, путь к которому указывается полностью.
Блок-схемы
В данном разделе приводятся блок-схемы различных функций программы с их описаниями (более полные описания приводятся в главе «Отладка и тестирование»).
Ниже представленна блок-схема функции Read (чтение данных из файла), на ней видно, каким именно образом осуществляется обработка ошибок и запись в файл:
Рис №7. Блок-схема функции Read
На данной блок-схеме представлен алгоритм подсчёта обработанных слов функции Scan:
Рис №8. Блок-схема функции Scan
Следующая блок-схема показывает, каким именно образом происход очистка слов от различных знаков препинания и машинных символов:
Рис №9. Блок-схема функции Delete
Ниже представленна блок-схема главной функции (части программы, отвечающей за взаимодействие с пользователем):
Рис №10. Блок-схема главной функции
программа приложение подсчет текстовый
Отладка и тестирование
#include <stdio.h> - описание стандартных функций ввода и вывода
#include <string.h> - описание функций для работы со строками
#include <conio.h> - описание функций для работы с клавиатурой и монитором
#include <stdlib.h> - описание функций контроля выполнения программы
#include <locale.h> - описание функций связанных с локализацией программы
int t=0,e,g; - объявление глобальных переменных с типом int
char words[500000][50]; - объявление глобального массива строк
typedef struct Count{ - описание структуры и ввод нового имени структуры
char word[50]; - объявление строковой переменной внутри структуры
int num; - объявление переменной с типом int внутри структуры
}CNT; - имя-синоним структуры
CNT V[500000]; - объявление структуры заданного типа
void Read(int*j) - прототип функции чтения с файла с параметром указателем типа int
{
int i; - объявление переменной типа int внутри функции
char name[50]; - объявление строковой переменной внутри функции
FILE *book; - объявление указателя на файл
clrscr(); - очистка экрана
printf("Vvedite nazvanie faila i put' k nemy\n"); - сообщение о вводе имени и пути к файлу
scanf("%s",&name); - ввод пути и имени файла
if ((book=fopen(name,"r"))==NULL) - открытие файла в режиме чтение и условие на проверку существования введённого пользователем файла. Если файл не существую - программа возвращает сообщение об ошибке
{printf("Fail nevojmojno otkryt'\n"); - сообщение об ошибке
getch();} - ожидание нажатия клавиши
else { - если условие не выполняет, то следует выполнение данного оператора
printf("Obrabotka..."); - сообщение о работе программы
for(i=0;!feof(book);i++) { - цикл считывания с файла данных. Запись начинается с нулевого элемента в глобальный массив строк words. После каждого считанного слова выполняется инкрементирование i. Цикл работает до тех пор, пока команда feof не вернёт 1. Feof проверяет выполнение условия окончания файла и в случае невыполнения возвращает 0
fscanf(book,"%s",&words[i]);} - считывание слов с файла
fclose(book); - закрытие обработанного файла
*j=i; - процесс присваивания
t=1; - процесс присваивания глобальной переменной значения 1. Ввод данной переменной обусловлен тем, что вывод результатов программы невозможен до тех пор, пока не будет считана информация с файла. Функции на вывод результатов работают только при положительном значении t
}}
int Scan(CNT*V,int*i) - прототип функции типа int подсчёта введённых слов с файла с параметрами-указателями на структуру и переменную типа int
{
int j,d,s,q=0; - объявление переменных типа int
char vyvod[50],prov[]="::null::"; - объявление строковых переменных
for(j=0;j!=*i;j++) { - цикл обработки всех считанных слов
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
printf("\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");
printf("Press any key to escape for menu");}
else{ - если условие не выполнено, то действует данный оператор
clrscr(); - очистка экрана
for(j=0;j!=q;j++) { - цикл вывода слов из структуры
printf("slovo '%s' - kol-vo: %d\n",V[j].word,V[j].num);}
printf("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");
printf("Press any key to escape for menu");}
else{
printf("Vvedite nazvanie faila i put' k nemy\n"); - вывод сообщения о вводе пути и названия файла
scanf("%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);} - запись в файл
fprintf(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");
printf(" Romanov A.S.\n");
printf("=============================\n");
printf(" M E N U\n"); - вывод меню
printf("1:Read from file\n");
printf("2:Rezult\n");
printf("3:Write in file\n");
printf("4:Exit\n");
scanf("%d",&w); - ввод значения w
switch(w) { - оператор выбора
case 1: Read(&e); Delete(&e); g=Scan(V,&e); break; - выполнение функций
case 2: Output(V,&e,g); break;
case 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.Проверка подсчёта общего количества слов
Результаты показывают, что программа справилась со вторым тестом.
Тест №3.
Проверка работы счётчика вхождения уникальных слов.
В качестве текста возьмём часть введения. Узнаем количество слов фрагмента при помощи Microsoft Word:
За тестовый материал возьмём следующий текст(Рис №15):
Рис №15. Тест №3.Проверка подсчёта слов
Посмотрим на результат работы программы(Рис №16):
Рис №16. Тест №3. Проверка подсчёта слов
Исходя из результатов вышеприведённых тестов, можно сказать, что программа успешно справилась со всеми тестами. И может быть использована студентами, преподавателями и людьми, работающими в лингвистических и филологических направлениях.
Сопровождение
Для корректной работы программы необходимо 35 кб свободного места на жёстком диске. Количество требуемой оперативной памяти варьируется в зависимости от объёма обрабатываемого текста:
Для 100 слов(~555 знаков) - 1024 кб;
Для 1000 слов(~5699 знаков) - 1084 кб;
Для 70000 слов(~441 962 знаков) - 5272 кб;
Для 543000 слов(~3 560 607 знаков) - 28 523 кб;
Следует учитывать, что от объёма текста также зависит и время, требуемое на обработку программой. В случае с 70000 слов примерное время обработки составило 6 секунд, в случае с 543000 слов - 1 минуту 9 секунд. Программа предназначена для работы на операционных системах Microsoft Windows любой разрядности. Для работы с консолью обязательно наличие клавиатуры.
При запуске программы появляется консоль с действиями, предлагаемыми на выбор пользователю(Рис №17):
Рис №17. Работа с приложением №1.
При выборе второго и третьего пункта, без загруженного в память программы текста, пользователь получает следующее сообщение(Рис №18)
Рис №18. Работа с приложением №2.
В случае выбора пользователем первого пункта, предлагается ввести полный путь к файлу. Если файл не существует или путь неверен, то пользователь получит сообщение следующего вида(Рис №19):
Рис №19. Работа с приложением №3.
В случае правильного ввода(Рис №20):
Рис №20. Работа с приложением №4.
После окончания обработки выводится 3 звуковых сигнала.
Когда текст обработан, можно выбрать 2-ой или 3-ий пункт в меню.
2 пункт(Рис №21):
Рис №21. Работа с приложением №5.
3-ий пункт(Рис №22):
Рис №22. Работа с приложением №6.
При выборе 4-го пункта программа закрывается.
В данном разделе были описаны минимальные системные требования для работы приложения и подробно описаны все возможные варианты взаимодействия пользователя с программой. К каждому текстовому описанию действия выполняемого пользователем приводится графическая иллюстрация.
Заключение
При выполнении данной курсовой работы были рассмотрены 4 источника литературы и 1 электронный ресурс соответсвующие предметной области, так же было рассмотрено 3 приложения, которые частично или полностью соответсвуют поставленной цели.
В ходе выполнения курсовой работы были выполнены следующие задачи:
1)Выделены возможные области применения разработанного приложения (филологические и лингвистические исследования), было рассмотрено 3 варианта готовых решений (текстовые редакторы, браузеры, приложение «LitFrequencyMeter»);
2)Был составлен алгоритм приложения, представленный в виде схемы и блок-схем в разделе «Проектирование»
3)Разработан программный код на языке программирования Си. В работе он представлен с подробными комментариями.
4)Приложение было протестировано на базе группы пользователей.
5)В ходе работы были выявлены и устранены следующие ошибки (в работе представлен финальный вариант):
Одно и тоже слово со знаком препинания и без считывалось программой как разные слова. Данный недостаток устранён при помощи введения функции Delete;
Приложение позволяло выбрать второй и третий пункт без загруженного текста. Данный недостаток устранён при помощи проверки условия заполнения массива строк (подобнее рассматривается в разделе «Программный код»);
Максимальный объём слов, считываемых программой - 600 000. Данный недостаток можно устранить, изменив код программы, но для этого необходим исходный код.
6)Составлено подробное описание работы приложения для пользователей. Для наглядности описание содержит скриншоты консоли.
Вследствие этого можно считать, что выполнена поставленная цель данной работы - разработка приложения «Подсчет частоты введенных слов в текстовом файле».
Финальное приложение предполагает использование людьми, занятыми в филологической или лингвистической направленнастях. Аналогично, данное приложение может быть использовано студентами и преподавателями для проведения некоторых статистических исследований.
Список литературы
1. Гришмановский П.В., Даниленко И.Н. Курсовое проектирование. Разработка программного обеспечения. Методические указания к выполнению курсовых проектов для студентов специальностей 210100 «Управление и информатика в технических системах» и 220400 «Программное обеспечение вычислительной техники и автоматизированных систем». Сургут: Издательство СурГУ, 2004. - 23с.
2. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. - 2-е доп. изд. - М.: Финансы и статистика, 2004. - 600 с.: ил.
3. Поляков К.Ю. Практический курс программирования на Си: свободно-распространяемый интернет - учебник в формате PDF.
4. Поляков К.Ю. Презентации по практическому курсу программирования на Си: Хранение и обработка данных -- Си, Проектирование программ -- Си, Численные методы -- Си, Целочисленные алгоритмы -- Си, Динамические структуры данных -- Си. 2008-2009.
5. www.cyberforum.ru. Электронный ресурс.
6. www.stackoverflow.com. Электронный ресурс.
Приложение
Листинг программы
1. #include <stdio.h>
2. #include <string.h>
3. #include <conio.h>
4. #include <stdlib.h>
5. #include <locale.h>
6. int t=0,e,g,n;
7. char words[700000][50],name1[50];
8. typedef struct Count{
9. char word[50];
10. int num;
11. }CNT;
12. CNT V[700000];
13. void SravnNum(char prov[50],int*ok)
14. {
15. int i,j;
16. char numbers[]="0123456789";
17. *ok=0;
18. for(i=0;prov[i]!='\0';i++) {
19. for(j=0;numbers[j]!='\0';j++) {
20. if (prov[i]==numbers[j]) {
21. *ok=1; break;}}}}
22. void SravnAlp(char prov[50],int*ok)
23. {
24. int i,j,p=0,d=0,mass[50][100];
25. char alphabet[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
26. *ok=0;
27. for(i=0;prov[i]!='\0';i++) {
28. for(j=0;alphabet[j]!='\0';j++) {
29. if (prov[i]==alphabet[j]) {
30. p=1; break;}}}
31. if (p==1)
32. {for(i=0;prov[i]!='\0';i++) {
33. for(j=0;alphabet[j]!='\0';j++) {
34. if (prov[i]==alphabet[j]) {
35. d++;}}}
36. if (d!=i) {*ok=1;}
37. }}
38. void Read(int*j)
39. {
40. int i,ok=0,ok1=0;
41. FILE *book;
42. clrscr();
43. printf("Vvedite nazvanie faila i put' k nemy\n");
44. scanf("%s",&name1);
45. if ((book=fopen(name1,"r"))==NULL)
46. {printf("Fail nevojmojno otkryt'\n");
47. getch();}
48. else {
49. printf("Vvedite minal'nyu dliny slova\n");
50. scanf("%d",&n);
51. printf("Obrabotka...");
52. for(i=0;!feof(book);) {
53. fscanf(book,"%s",&words[i]);
54. if (strlen(words[i])<n)
55. {continue;}
56. else SravnNum(words[i],&ok);
57. SravnAlp(words[i],&ok1);
58. if (ok==0 && ok1==0) {i++;}}
59. fclose(book);
60. *j=i;
61. t=1;}
62. }
63. int Scan(CNT*V,int*i)
64. {
65. int j,d,s,q=0;
66. char vyvod[50],prov[]="::null::";
67. for(j=0;j!=*i;j++) {
68. d=0;
69. if (strcmp(words[j],prov)==0) {continue;}
70. else {
71. strcpy(vyvod,words[j]);
72. for(s=0;s!=*i;s++) {
73. if (strcmp(vyvod,words[s])==0) {d++; strcpy(words[s],prov);}}
74. strcpy(V[q].word,vyvod); V[q].num=d; q++;}}
75. if (t=1){
76. printf("\a\a\a");}
77. return q;
78. }
79. void Delete(int*i)
80. {
81. char spr[]="!<[{()}]« »>:,.?;";
82. int k,r,j,d;
83. for(d=0;d!=*i;d++) {
84. for(k=0;spr[k]!='\0';k++) {
85. for(r=j=0;words[d][r]!='\0';r++)
86. if (words[d][r]!=spr[k])
87. {words[d][j++]=words[d][r];}
88. words[d][j]='\0';}
89. }
90. }
91. void Output(CNT*V,int*i,int q)
92. {
93. int j;
94. if (t!=1) {
95. clrscr();
96. printf("Snachala nyjno prochitat' fail\n");
97. printf("Press any key to escape for menu");}
98. else{
99. clrscr();
100. for(j=0;j!=q;j++) {
101. printf("slovo '%s' - kol-vo: %d\n",V[j].word,V[j].num);}
102. printf("Vsego slov - %d\n",*i);
103. printf("Unikal'nyh slov - %d",q);}
104. getch();
105. }
106. void Write(CNT*V,int*i,int q)
107. {
108. int j;
109. char name[50];
110. FILE *book;
111. clrscr();
112. if (t!=1) {
113. printf("Snachala nyjno prochitat' fail\n");
114. printf("Press any key to escape for menu");}
115. else{
116. printf("Vvedite nazvanie faila i put' k nemy\n");
117. scanf("%s",&name);
118. book=fopen(name,"wt");
119. fprintf(book,"imya vhodnogo faila: %s\n",name1);
120. fprintf(book,"minimal'naya dlina slov: %d\n",n);
121. for(j=0;j!=q;j++) {
122. fprintf(book,"slovo '%s'\t kol-vo: %d\n",V[j].word,V[j].num);}
123. fprintf(book,"Vsego slov\t %d\n",*i);
124. fprintf(book,"Unikal'nyh slov\t %d",q);
125. fclose(book);}
126. getch();
127. }
128. void Sort(CNT*V,int q)
129. {
130. int i,j,a;
131. char b[50];
132. for(i=0; i<q-1; i++){
133. for(j=i+1; j<q; j++){
134. if(strcmpi(V[i].word,V[j].word)>0){
135. strcpy(b,V[i].word);
136. strcpy(V[i].word,V[j].word);
137. strcpy(V[j].word,b);
138. a=V[i].num;
139. V[i].num=V[j].num;
140. V[j].num=a;}}}
141. }
142. int main()
143. {
144. int w;
145. setlocale(LC_ALL,"Russian");
146. while(1){
147. clrscr();
148. printf("=============================\n");
149. printf(" Kursovoi proekt\n");
150. printf("Vypolnil student gryppy 12-94\n");
151. printf(" Romanov A.S.\n");
152. printf("=============================\n");
153. printf(" M E N U\n");
154. printf("1:Read from file\n");
155. printf("2:Rezult\n");
156. printf("3:Write in file\n");
157. printf("4:Exit\n");
158. scanf("%d",&w);
159. switch(w) {
160. case 1: Read(&e); Delete(&e); g=Scan(V,&e); break;
161. case 2: Sort(V,g); Output(V,&e,g); break;
162. case 3: Sort(V,g); Write(V,&e,g); break;
163. case 4: exit(0);}
164. }
165. }
Размещено на Allbest.ru
Подобные документы
"Метод ключевых слов" как один из распространенных методов перехода к математической модели документа. Закономерности распределения частоты слов, отраженные в законе Ципфа. Экспериментальная оценка статистического анализа текста по модели TF*IDF.
реферат [591,7 K], добавлен 24.06.2009Проектирование пользовательского интерфейса. Выбор формата представления данных, используемые переменные. Список процедур и макросов, их назначение. Используемые в программе функции. Тестирование и отладка правильной работы программы, схема листинга.
курсовая работа [28,6 K], добавлен 17.05.2013Вычисление суммы ряда с заданной точностью. Форма представления исходных данных. Разработка алгоритма и его описание. Выбор метода обработки информации. Упорядочение элементов строк матрицы по возрастанию. Программа подсчета числа слов в предложении.
курсовая работа [23,9 K], добавлен 11.02.2016Создание программы, работающей со списком группы, который хранится в текстовом файле; среда разработки: Qt Creator 5.1. Описание и определение самой длинной фамилии среди студентов группы. Руководство пользователя; словесный алгоритм; код программы.
отчет по практике [304,9 K], добавлен 29.09.2013Основные компоненты среды Delphi, используемые в программе для сжатия и восстановления файлов. Код программы, разбивка массива на промежутки. Проверка определенных элементов кодовых слов. Поиск кодовых слов в остатке. Результаты тестирования приложения.
курсовая работа [94,1 K], добавлен 19.12.2010Программное обеспечение - важный компонент функционирования компьютерной деятельности. Изучение принципа работы резидентных программ. Разработка программы по удалению слов из текстового файла без учета регистра. Требования к программе, разработка проекта.
курсовая работа [404,5 K], добавлен 03.02.2011Мотивы и особенности лексики произведений "О дивный новый мир" О. Хаксли и "1984" Дж. Оруэлла. Анализ, сравнение и обобщение ключевых слов и воссоздание художественного мира романов. Создание веб-приложения "Словарь ключевых слов британских антиутопий".
дипломная работа [2,6 M], добавлен 21.06.2016Описание языка программирования Java: общие характеристики, главные свойства, краткий обзор. Надежность и безопасность, производительность и базовая система программы. Разработка программы поиска по словарю, алгоритм её работы. Общий вид кода программы.
курсовая работа [20,3 K], добавлен 28.10.2012Описание использованных структур данных, характеристика процедур и функций. Структура приложения и интерфейс пользователя. Системные требования и имеющиеся ограничения. Тестирование приложения. Анализ временных характеристик и выводы по эффективности.
курсовая работа [3,3 M], добавлен 23.07.2012Запуск программы из среды Turbo C 2.0. Число строк в файле. Формирование алфавитного порядка. Метод линейного поиска. Функциональная структура программы. Структура записи файла. Последовательный просмотр элементов таблицы. Информация о входном файле.
курсовая работа [688,6 K], добавлен 13.03.2013