Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод предложений из файла 
:(
    Опции темы
Disite77
Дата 19.1.2016, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.1.2016

Репутация: нет
Всего: нет



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

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
 
using namespace std;
char *filetr="C:\\text.txt";
void ReadFile()
{
    string s;
    int end,begin=0,pos;
    ifstream fileStream(filetr);
    while (!fileStream.eof())
        {
     getline(fileStream,s);//Построчное считывание информации в S
      while(1){
        end = s.find('.',begin); // поиск окончания предложения
        if( end == string::npos ) break; // если предложений нет
        pos = s.find( '4', begin ); // поиск цифрового символа
        if( pos < end ) // если в текущем предложении есть цифра
            cout.write( &s[begin], end-begin +1 ) << "\n"; // вывод предложения
        begin = end+1; // начало нового предложения
              }
        }
       fileStream.close();  //Закрыли открытый файл
}
int main()
{ setlocale(LC_ALL,"Russian");
    ReadFile();
   getch();
}

Заранее спасибо
PM MAIL   Вверх
rudolfninja
Дата 19.1.2016, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 1
Всего: 6



Я бы посоветовал вам поступить следующим образом: считать весь текст из файла в один большой буфер (это в случае есть файл небольшой). Затем этот буфер разбить на предложения (таким образом, сформировав массив предложений) и уже в этом массиве искать предложения с цифрами.
Если файл большой то читать построчно из файла информацию и записывать ее в буфер, пока в строке не будет символа конца предложения. Таким образом у вас будет предложение, которое сразу можно проверить на наличие цифры и вывести его на экран в нужно случае. Затем запоминать оставшуюся часть строки (которая после символа конца предложения) и снова читать информацию из файла в буфер, предварительно поместив в буфер начало следующего предложения.
В вашем коде если в первой строке есть цифра, но нет символа конца пердложения, то в итоге часть с цифрой будет потеряна.
PM MAIL Skype   Вверх
Envy
Дата 20.1.2016, 15:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я не специалист по с++, но я бы сделал так:
(Если кто-нибудь скажет, как сделать лучше, буду очень благодарен)
Код

#include <fstream>
#include <iostream>
#include <cctype>       // std::isdigit

std::string tokenizer(std::fstream &cin) {    
    std::string sentence;
    char term;
    while(cin.get(term)) {
        sentence+=term;
        if (term == '.') {
            return sentence;
        }
    }
    return sentence;
}

bool has_numeric(const std::string &str) {
    for(auto it = str.cbegin(); it != str.cend(); ++it) {
        if (std::isdigit(*it)) {
            return true;
        }
    }
    return false;
}

int main(int argc, char** argv) {
    std::fstream fin;
    fin.open(argv[1], std::fstream::in);

    std::string sentence;
    while(1) {        
        sentence = tokenizer(fin);
        if (sentence.empty()) {
            break;
        }

        if (has_numeric(sentence)) {
            std::cout << sentence << std::endl;
        }
    }
    fin.close();
    return 0;
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.