Написать программу, которая считывает текст из файла и выводит его на экран, добавляя после каждого предложения, сколько раз встретилось в нем введенное с клавиатуры слово.
Код программы:
//--------------------------------------------------------------------------- #include<iostream.h> #include<conio.h> #include<windows.h> #include<fstream.h> #include <vcl.h> #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- char *rus(const char *text); //функция для распознавания русских символов int main(int argc, char* argv[]) { ifstream fin("text.txt"); //открываем файл для чтения if(!fin) //если файла нет { cout<<rus("Ошибка открытия файла.")<<endl; //выводим сообщение getch(); return 1; } fin.seekg(0,ios::end); //определяем длину файла, перемещаемся на его конец long len=fin.tellg(); //получаем длину файла и заносим в переменную len char *buf=new char[len+1];//выделяем len+1 байтов для хранения текста из файла fin.seekg(0,ios::beg); //переносимся опять на начало файла для чтения fin.read(buf,len); //проводим чтение из файла buf[len]='\0'; //заносим 0-ой символ в конец файла char *word=new char[len+1]; //выделяем len+1 байтов для хранения введенного слова char *buffer=new char[len+1];//выделяем len+1 байтов для хранения предложения cout<<rus("Введите слово: ");cin>>word; //вводим слово для поиска cout<<endl; int l_word=strlen(word),cnt=0;//переменные для определения длины слова и счетчик long n=0,i=0,j=0,m=0; //объявление переменных для работы с текстом while(buf[i]) //просмотр файла { if(buf[i]=='.'||buf[i]=='?'||buf[i]=='!') { for(j=n,m=0;j<=i;j++,m++)//цикл для считывания текста { cout<<buf[j]; //вывод текста buffer[m]=buf[j]; //копирование предложения в переменную buffer } buffer[m]='\0'; //занесения 0-го символа в конец предложения char *p=buffer; //создание указателя на переменную buffer while(p=strstr(p,word))//поиск слова в предложении { p+=l_word; //увеличение длины подстроки cnt++; //увеличение счетчика } cout<<' '<<cnt; //вывод количества вхождений слова cnt=0; //обнуление счетчика n=i+1; //увеличение позиции текущего предложения cout<<endl; } i++; //увеличение счетчика для просмотра массива } fin.close(); //оператор закрытия файла getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Создаем текстовый файл в папке с проектом с именем text.txt и заполняем его необходимым содержанием.
Как вариант заполнить файл абракадаброй, добавляя между ними слово для поиска, например cat.
Результат работы программы: