Вариант 17

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

Код программы:

//---------------------------------------------------------------------------
#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.

Результат работы программы:

Результат работы. Семнадцатый вариант. Строки и файлы

Вариант 16
Вариант 18
error: Content is protected !!
Adblock
detector