Есть файл. В нём нужно посчитать количество повествовательных предложений и выделить 3 повествовательное предложение с обеих сторон. Повествовательным предложением считать то предложение, которое оканчивается точкой. Программу я уже написал, и с правой стороны предложение выделяется исправно, но к сожалению с левой стороны не выходит. Приведу пример.
1 предложение.
2 предложение.
3 предложение?
4 предложение!
====> 5 предложение. <====
Примерно так это должно выглядеть, а у меня это так: 5 предложение. <====
При том, хочу отметить, что 2 или более предложения могут идти в одну строчку, то есть не всегда, когда кончается предложение нужно переходить на новую строчку. Код прилагаю.
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>
#include <windows.h>
using namespace std;
int main()
{
setlocale (0,"rus");
FILE *f;
char ch;
int t=0, kolvo = 0, ob=0;
if ((f = fopen("File.txt","r"))== NULL)
{
printf("Невозможно открыть файл.\n");
return 0;
}
f = fopen("File.txt","r");
while(!feof(f))
{
fscanf(f, "%c", &ch);
cout<<ch;
}
fseek(f,0,SEEK_SET);
while(!feof(f))
{
ch = fgetc(f);
for (int i=0;i<3;i++)
if (ch == '.')
{
kolvo++;
break;
}
}
cout<<"\nКоличество повествовательных предложений:"<<kolvo<<endl<<endl;
system("pause");
system("cls");
fseek(f,0,SEEK_SET);
while(!feof(f))
{
ch = fgetc(f);
if(ch=='.')t++;
if(t==3 && ch=='.')
cout<<" <======";
cout<<ch;
}
return 0;
}
string s;
list<string> vs;
istream_iterator<string> first(cin), last;
while (first != last) {
s += *first;
if(!ispunct(s.back()))
s += ' ';
else {
vs.emplace_back(s);
s.clear();
}
++first;
}
vs.remove_if([](string t) {return t.back() != '.'; });
// vs содержит ваши предложения
только остается вместо cin использовать файловый обьект А можно просто найти позиции знаков пунктуации и записывть строку, если строка заканчивается пунктуацией '.', начиная от позиции предыдущего знака пунктуации
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости