Вариант 20

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

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

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

Создаем текстовый файл в папке с проектом с именем text.txt и заполняем его необходимым содержанием.
Для наглядности пронумеруем предложения.

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

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

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