Форум программистов, компьютерный форум CyberForum.ru

Считывание предложений из текстового файла(готовый код) - C++

Восстановить пароль Регистрация
 
vitalya_gap
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 34
09.12.2013, 13:20     Считывание предложений из текстового файла(готовый код) #1
Здравствуйте господа. Подскажите пожалуйста возможно ли подправить этот код таким образом чтобы количество считываемых предложений из текстового файла вводилось с клавиатуры?Тут по умолчанию считывает 3 предложения..
Если такое возможно,подскажите как или кто может исправьте пожалуйста)Я сам просто "НУБ" в программировании...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
int main()
{   
    ifstream fin("input.txt", ios::binary);
    ofstream fout("output.txt");
    
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        vector <string> v; // вектор для предложений
        char ch;
        string str; // строка для предложения
        
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
        
        while (true)
        {
            fin.get(ch);
            if (fin.eof()) break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                v.push_back(str); // предложение в вектор
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        fin.close();
 
        for (auto i = v.rbegin(); i != v.rend(); i++) // запись предложений в обратном порядке в файл
        {
            fout << *i;
            if (i != (v.rend() - 1)) fout << ' ';
        }
        fout.close();
    }
    
    system("pause");
    return 0;
}
Добавлено через 14 часов 30 минут
???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 13:20     Считывание предложений из текстового файла(готовый код)
Посмотрите здесь:

Считывание из текстового файла C++
C++ Считывание с текстового файла. Сортировка
Считывание из текстового файла в строку C++
C++ Считывание текстового файла
Поочередной считывание строк из текстового файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
09.12.2013, 13:29     Считывание предложений из текстового файла(готовый код) #2
Цитата Сообщение от vitalya_gap Посмотреть сообщение
по умолчанию считывает 3 предложения
А сколько у вас в файле? Не три ли?
Цитата Сообщение от vitalya_gap Посмотреть сообщение
количество считываемых предложений из текстового файла вводилось с клавиатуры?
Двадцать третья строка: заменить while на for, и предварительно воткните для него cin.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
09.12.2013, 13:43     Считывание предложений из текстового файла(готовый код) #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
 
int main()
{
    ifstream fin("in.txt", ios::binary);
    ofstream fout("output.txt");
 
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        vector <string> v; // вектор для предложений
        char ch;
        string str; // строка для предложения
        int cnr;
        std::cout << "cnr= ";
        std::cin >> cnr;
 
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
 
        while (cnr)
        {
            //std::cout << cnr << '\n';
            fin.get(ch);
            //std::cout << ch << '\n';
            if (fin.eof())
                break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                v.push_back(str); // предложение в вектор
                --cnr;
            //std::cout << str << '\n';
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        //std::cout << "v.size(): " << v.size() << '\n';
        fin.close();
 
        for (auto i = v.rbegin(); i != v.rend(); i++) // запись предложений в обратном порядке в файл
        {
            fout << *i;
            cout << *i;
            if (i != (v.rend() - 1)) fout << ' ';
        }
        fout.close();
    }
    return 0;
}
vitalya_gap
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 34
09.12.2013, 14:18  [ТС]     Считывание предложений из текстового файла(готовый код) #4
igorrr37, Спасибо,работает)
Yandex
Объявления
09.12.2013, 14:18     Считывание предложений из текстового файла(готовый код)
Ответ Создать тему
Опции темы

Текущее время: 15:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru