Форматирование текстового файла

  • ID: 07103 
  • 10 страниц
300 рубСкачать

антиплагиат в подарок

kurs.cpp

kurs.exe

st

пояснительная записка.docx

Фрагмент работы:

Содержание:

стр.

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

2. Содержательное описание структур данных и алгоритмы 3

2.1 Алгоритм разбора строки на слова 4

2.2 Алгоритм подсчета повторяющихся слов 5

3. Исходный текст программы с комментариями 6

5. Литература 13

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

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

Программа подсчитывает частоты появления слов в тексте, слова считаются одинаковыми при совпадении первых 70% букв (% совпадения можно менять, синтаксис слов не учитывается). Формируется таблица из первых n наиболее часто встречающихся слов, в таблице содержится само слово и ссылки на все абзацы, где оно появляется.

Содержательное описание структур данных и алгоритмов

Все слова из текстового файла загружаются в односвязный список, структура которого выглядит следующим образом:

struct all_words {

char *str; //Указатель на слово

int num; //Номер абзаца, где находится данное слово

struct all_words *next; //Указатель на следующий элемент списка

};

После загрузки всех слов в память, начинается подсчет частоты появления слов в тексте, в результате строится еще один односвязный список со следующей структурой:

struct povtor_words {

char *str; //Указатель на слово

int num[500]; //Массив номеров абзацев, где встречается слово

int ab; //Число уникальных абзацев

int povtor; //Число повторов

struct povtor_words *next; //Указатель на следующий элемент //списка

};

2.1 Алгоритм разбора строки на слова

for (; *temp != '\0'; temp++) { //Просматриваем всю строку до конца.

for (; *temp == ' ' && *temp != '\0'; temp++); //Ищем начало слова (любой символ, не пробел).

pb = temp; //pb – хранит указатель на начало слова.

for (; *temp != '\0'; temp++) { //Просматривая всю строку ищем конец слова (пробел или ,.?)!:;”)

if (*temp == ' ') { pe = temp; break; } //Если слово заканчивается пробелом