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

Есть задание, цитирую точно как в методичке: «Написать программу которая считывает из текстового файла три предложения и выводит их в обратном порядке». Звучит так, будто в файле всегда должно быть только три предложения. Как оказалось, нужно сделать так, чтобы программа считала и вывела ПЕРВЫХ три предложения в обратном порядке. Вот так выглядит мое решение:

ifstream fin(«sen.txt»); string str, sdel(«. «); stack stk; if (!fin) < cout for (char c; fin.get(c); ) < str += c; if (sdel.find(c) != string::npos) < stk.push(str); str.clear(); >> for (; !stk.empty(); stk.pop()) < if (stk.size() > return 0;

Такое решение у меня не приняли, то-есть, у меня программа если находит какой-то из знаков «. » то отделяет все что было до этого предложением, включая знак и запихивает в стек.

Как мне сказал преподаватель: «Точка не обязательно есть концом предложения». Дальше он начал рассказывать такое: Начало — большая буква, конец — . ! ? Предложение может находится — только в одной строке, но строка может содержать много предложений. Это называется формализацией. Честно говоря, я не очень то понял, что это значит, и как мне определять, конец ли предложения.

Запись ОБЪЕКТА КЛАССА в файл с++. Чтение объекта из файла c++ Для начинающих. Урок #117

Источник: ru.stackoverflow.com

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

Platinum96

Not a member of Pastebin yet? Sign Up, it unlocks many cool features!

C++ 0.80 KB | None | 0 0

using namespace std ;

ifstream fin ( «text1.txt» ) ;

if ( ! fin ) cout << «Net takogo faila» ;

fin. seekg ( 0 , ios :: end ) ;

long len = fin. tellg ( ) ;

fin. seekg ( 0 , ios :: beg ) ;

char str [ len ] ;

fin. getline ( str, len ) ;

Читайте также:
Программа создающая QR код

long i = 0 , n = 0 ,b = 0 ;

while ( str [ i ] )

if ( str [ i ] == ‘.’ || str [ i ] == ‘?’ || str [ i ] == ‘!’ ) {

for ( int j ( i ) ; j >= b — 1 ; j — ) {

cout << str [ j ] ;

} n ++ ; b = i + 1 ;

if ( n == 3 ) break ;

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

и выводит их в обратном порядке

Advertisement

Add Comment

Please, Sign In to add comment

Advertisement

C# | 3 min ago | 1.46 KB

C# | 6 min ago | 2.08 KB

C# | 7 min ago | 1.71 KB

C# | 9 min ago | 1.71 KB

C# | 14 min ago | 1.15 KB

GetText | 20 min ago | 0.24 KB

Ruby | 21 min ago | 29.59 KB

Работа с файлами в Python. Чтение и запись данных

C++ | 22 min ago | 1.23 KB

Advertisement

We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand

Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!

Источник: pastebin.com

Вариант 1

C/C++ Структурное программирование

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

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

//————————————————————————— #include #include #include #include #include #include #pragma hdrstop #pragma argsused //————————————————————————— char *rus(const char *text); int main(int argc, char* argv[]) < ifstream fin(«text.txt»); if(!fin) < cout< 1; > fin.seekg(0,ios::end); long len=fin.tellg(); char *buf=new char[len+1]; char *buffer=new char[len+1]; fin.seekg(0,ios::beg); fin.read(buf,len); buf[len]=’’; long n=0,i=0,j=0,m,cnt=0,k; vectorc(3); //————————————————————————— while(buf[i]) < if(buf[i]==’.’||buf[i]==’?’||buf[i]==’!’) < for(j=n,m=0;j<=i;j++) < buffer[m++]=buf[j]; cout buffer[m]=’’; cout1; > if(3==cnt) < break; > i++; > for(k=cnt-1;k>=0;k—)coutreturn 0; > //————————————————————————— char bufrus[256]; char *rus(const char *text) < CharToOem(text, bufrus); return bufrus; > //—————————————————————————

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

Читайте также:
Программа cain как работает

Источник: cpp-lab.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru