Статистический анализ текста

ОГЛАВЛЕНИЕ



Введение

Постановка задачи

Алгоритм решения задачи

2.1 Алгоритм решения задачи

2.2 Конструирование алгоритма

2.3 Описание программной реализации

3. Описание программы

3.1 Назначение программы

3.2 Системные требования

4. Заключение

5. Список используемой литературы

6. Приложение 1




Введение

	

	Всем известно, что вычислительная техника облегчает жизнь человеку и её применение в различных сферах жизни и деятельности людей уже не новинка. Заданием для данной курсовой работы я выбрал программу «Статистический анализ текста». Для создания программы я использовал язык программирования «Си». Для работы программы подходит любой компьютер, поддерживающий операционную систему DOS, либо её эмуляцию (как в ОС Windows).

Язык «Cи» - это универсальный язык программирования, для которого характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов. Язык «Cи» не является ни языком "очень высокого уровня", ни "большим" языком, и не предназначается для некоторой специальной области применения, но отсутствие ограничений и общность языка делают его более удобным и эффективным для многих задач, чем языки, предположительно более мощные. Операционная система, компилятор с языка «Cи» и по существу все прикладные программы системы «UNIX» написаны на «Cи». Коммерческие компиляторы с языка «Cи» существуют также на некоторых других ЭВМ. Язык «C»не связан с какими-либо определенными аппаратными средствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любой ЭВМ, имеющей «Cи»-компилятор. 




1. Постановка задачи



Написать программу, читающую текстовый файл и подсчитывающую количество слов, пробелов, спецзнаков. Также программа должна находить в тексте и подсчитывать количество слов, слово вводится с клавиатуры.




2. Алгоритм решения задачи



2.1 Алгоритм решения задачи



Программа считывает построчно информацию из файла, находит всю информацию о нем, затем по нажатию на соответствующую клавишу, выдает ответ.



2.2 Конструирование алгоритма



Рис. 1. Общая структурная схема программы




2.3 Описание программной реализации



Таб.1 Описание глобальных переменных

Название переменной

Тип

Описание переменной

p[255]

Массив int

Используется для хранения количества пробелов в строке

i,j,qw,ks

int

Счетчик

x, y,x2,y2

int

Координаты по x и по y

s[255][255]

Массив char

Массив для хранения информации из файла

ss[255]

Массив int

Используются для хранения количества спецзнаков в строке

q

char

Нажатая клавиша

f1

FILE

Файловая переменная

*pf

char

Используется для записи с клавиатуры пути к файлу 

len 

int

Для хранения длины введенного слова

slovo[20]

Массив char 

Для хранения введенного слова



Табл. 2. Описание функций

№ п/п

Наименование функции

Назначение

1

kolvoslov()

Находит количество слов в тексте

2

menu()

Выводит на экран меню




3. Описание программы



3.1 Назначение программы



Данная программа может использоваться для анализа текстовых файлов, поиска слов и т.п. 



3.2 Системные требования



Минимальный набор технических средств:

- процессор, начиная с 486XT;

-оперативная память не менее 2 Мбайт:

-монитор VGA, SVGA;

-видеоадаптер VGA,SVGA с памятью не менее 512 Кбайт;

-наличие НЖМД или НГМД;

-наличие ОС MS-DOS или Windows 95/98/XP/Vista 

-стандартная клавиатура.




4. Заключение



В ходе выполнения данной курсовой работы мною была разработана программа. Результаты многочисленных проведённых тестов указывают на то, что программа работает верно.

В этой работе я попытался учесть все возможные ситуации и возможные ошибки. Полученная задача и цель были выполнены. Но все возможности языка еще предстоит изучить и понять.




5. Список используемой литературы

	

	Зуев В.А. Лекции I курса по предмету «Программирование интегрированных системах».

	Б. Керниган, Д. Ритчи «Язык программирования Си ++»

	Т.А. Павловловская «С/С++ Программирование на языке высокого уровня».

			 В.В. Подбельский «Язык С++».

	


ПРИЛОЖЕНИЯ



Приложение 1.



Листинг программы

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

int i,j,p[225],k,ss[225];

char s[225][225],*pf,q;

FILE *f1;

void menu()

{

clrscr();

cout<<"viberite punkt menu\n";

cout<<"1 -> vivesti vsu informaciyu\n";

cout<<"2 -> vivesti informaciyu ob odnoy stroke\n";

cout<<"3 -> vivesti vsu informaciyu o probelah\n";

cout<<"4 -> vivesti vsu informaciyu o specznakah\n";

cout<<"5 -> vivesti sodergimoe fayla\n";

cout<<"6 -> nayti kolvo povtoreniy slova\n";

cout<<"7 -> vihod\n";

}

int kolvoslov()

{

int fs=1,nc=0;

char ch[2]={0};

f1=fopen(pf,"r");

while(!feof(f1))

{

fgets(ch,2,f1);

if(ch[0]>32)

fs=0;

else if(0==fs)

{

nc++;

fs=1;

}

ch[0]=0;

}

fclose(f1);

return nc;

}

void main()

{

clrscr();

cout<<"vvedite nazvanie fayla-> ";

cin>>pf;

for(i=0;i<225;i++)

{

p[i]=0;ss[i]=0;

}

 if ((f1=fopen(pf,"r"))

 == NULL)

{

 cout<<"takogo fayla net";

 getche();

 abort();

}

f1=fopen(pf,"r");

i=0;

while(!feof(f1))

{

fgets(s[i],225,f1);

i++;

}

for(j=0;j<i;j++)

for(k=0;k<225;k++)

{

if(s[j][k]=='\0')break;

switch(s[j][k])

{

case ',':

case '!' :

case '#' :

case '$' :

case '%' :

case '^' :

case '&' :

case '*' :

case '(' :

case ')' :

case '-' :

case '_' :

case '=' :

case '+' :

case ';' :

case ':' :

case '"' :

case '>' :

case '<' :

case '/' :

case '.' :

case '}' :

case '{' :

case '[' :

case ']' :

ss[j]++;

break;

case ' ': p[j]++; break;

}

}

while(q!='7')

{

menu();

cin>>q;

if(q=='1')

{

for(j=0;j<i;j++)

{

cout<<"kolvo probelov v "<<j+1<<" stroke="<<p[j]<<"\n";

cout<<"kolvo specznakov v "<<j+1<<" stroke="<<ss[j]<<"\n";

}

cout<<"kolvo slov v fayle="<<kolvoslov();

getche();

}

if(q=='2')

{

cout<<"vvedite nomer stroki";

cin>>j;

cout<<"kolvo probelov v "<<j<<" stroke="<<p[j-1]<<"\n";

cout<<"kolvo specznakov v "<<j<<" stroke="<<ss[j-1]<<"\n";

getche();

}

if(q=='3')

{

for(j=0;j<i;j++)

cout<<"kolvo probelov v "<<j+1<<" stroke="<<p[j]<<"\n";

getche();

}

if(q=='4')

{

for(j=0;j<i;j++)

cout<<"kolvo specznakov v "<<j+1<<" stroke="<<ss[j]<<"\n";

getche();

}

if(q=='5')

{

for(j=0;j<i;j++)

cout<<s[j];

getche();

}

if(q=='6')

{

int len,qw=0,ks=0;

char slovo[20];

cout<<"vvedite iskomoe slovo ";

cin>>slovo;

len=strlen(slovo);

for(int i1=0;i1<i;i1++)

for(int i2=0;i2<55;i2++)

{

if(s[i1][i2]==slovo[qw])

qw++;

else qw=0;

if((qw+1)==len)

ks++;

}

cout<<"sovpadayushih slov -> "<<ks;

getche();

}

}

}