Консультация № 133324
21.04.2008, 10:00
0.00 руб.
0 1 1
Здравствуйте уважаемые эксперты!
Помогите пожалуйства написать программу следующего типа на С++.

1. Программа читает из файла текст.
2. Затем задаем слово для поиска в данном тексте.
3. После нахождения слова выдается время, которое было затрачено на поиск.

Заранее благодарю,
Артем.

Обсуждение

Неизвестный
21.04.2008, 13:44
общий
это ответ
Здравствуйте, Arti777!

Вот решение с использованием библиотечной функции strtok.
Файл считывается в строковый буфер и разделяется на слова, которые сравниваются с эталоном. После окончания поиска выводится затраченное время.

Приложение:
#include <time.h>#include <string.h>#include <iostream>#include <fstream>using namespace std;int main(){ ifstream i_file("input.txt"); if (i_file.fail()) return -1; //--- размер файла i_file.seekg(0,ios::end); long size = i_file.tellg(); i_file.seekg(0,ios::beg); char *strbuf = new char[size+1]; strbuf[size] = ‘\0‘; i_file.read(strbuf,size); //--- запрашиваем слово char word[32] = ""; cout << "Search: "; cin >> word; long beg = clock(); //--- в цикле выводим все найденные слова for (char *found = strtok(strbuf,"\n\t (){}<>;,.:-=+-*/\"); found; found = strtok(0,"\n\t (){}<>;,.:-=+-*/\")) { if (!strcmp(found,word) ) cout << "Position: " << int(found-strbuf) << endl; } long end = clock(); cout << endl << "Search time: " << end - beg << " ms" << endl; delete [] strbuf; i_file.close(); return 0;}
Форма ответа