Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






III. Программа и тестовые примеры






Разобьем написание программы на последовательность шагов.

Шаг 1. Ввести «скелет» программы (директивы #include, функцию main(), описа­ние переменных, открытие файла). Добавить контрольный вывод введенного сло­ва. Запустив программу, проверить ввод слова и успешность открытия файла. Для проверки вывода сообщения об ошибке следует выполнить программу еще раз, задав имя несуществующего файла.

 

#include < fstream.h>

int main()

{

const int len = 81;

char word[len], line[len];

setlocale(LC_ALL, " Russian");

cout < < " Введите слово для поиска: ";

cin > > word;

 

ifstream fin(" text.txt", ios:: in|ios:: nocreate);

if (! fin)

{

cout < < " Ошибка открытия файла." < < endl;

}

 

return 0;

}

 

Шаг 2. Добавить в программу цикл чтения из файла, внутри цикла поставить кон­трольный вывод считанной строки (добавляемые операторы помечены признаком комментария):

 

#include < fstream.h>

int main()

{

const int len = 81;

char word[len], line[len];

setlocale(LC_ALL, " Russian");

cout < < " Введите слово для поиска: ";

cin > > word;

 

ifstream fin(" text.txt", ios:: in|ios:: nocreate);

if (! fin)

{

cout < < " Ошибка открытия файла." < < endl;

return 1;

}

while (fin.getline(line, len))

{

cout < < line < < endl;

}

return 0;

}

Шаг 3. Добавить в программу цикл поиска последовательности символов, состав­ляющих слово, с контрольным выводом:

 

#include < fstream.h>

#include < string.h>

int main()

{

const int len = 81;

char word[len], line[len];

setlocale(LC_ALL, " Russian");

cout < < " Введите слово для поиска: ";

cin > > word;

int l word = strlen(word);

 

ifstream fin(" text.txt", ios:: in|ios:: nocreate);

if (! fin)

{

cout < < " Ошибка открытия файла." < < endl;

return 1;

}

 

int count = 0;

while (fin.getline(line, len))

{

char *p = line;

while (p = strstr(p, word))

{

cout < < " Совпадение: " < < p < < endl;

p += l word; count++;

}

}

cout < < count < < endl;

return 0;

}

 

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

Шаг 4. Добавить в программу анализ принадлежности символов, находящихся перед словом и после него, множеству знаков пунктуации и разделителей:

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал