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

Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 5.00
Olechka1991
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
25.04.2012, 20:40     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #1
Помогите пожалуйста с написанием программы:написать программу которая считывает текст из файла и выводит на экран только предложения содержащие введенное с клавиатуры слово
Я только поняла как считать файл ,да и то не знаю правильно ли
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FILE*fin;
fin=fopen("text.txt","r");
if (!fin)
{
    puts("Ошибка открытия файла");
    return 1;
}
fseek(fin,0,SEEK_END);
long len=ftell(fin);
char *buf=new char[len+1];
const int l_block=1024;
    int num_block=len/l_block;
    rewind(fin);
    fread(buf,l_block,num_block+1,fin);
    buf[len]='\0';

Добавлено через 32 минуты
тоесть найти предложения с данным словом?

Добавлено через 3 минуты
как можно текст на предложения разбить?

Добавлено через 1 минуту
fscanf считает символ пробела окончанием строки,а мне нужно чтобы окончаниеем строки считались либо точка либо! либо?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2012, 20:40     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово
Посмотрите здесь:

Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово C++
C++ Cчитать текст и вывести на экран только предложения, содержащие введенное с клавиатуры слово.
C++ Написать программу,которая считывает текст из файла и выводит на экран только предложения,содержащие введенное с клавиатуры слово.
C++ Вывести только предложения, содержащие введенное слово
C++ Списки и файлы. Вывести на экран только предложения, содержащие слово которое ввели с клавиатуры (найти ошибку в коде)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
extenup
53 / 53 / 3
Регистрация: 12.11.2011
Сообщений: 109
25.04.2012, 22:16     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #2
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    string text = ""; // текст записанный из файла
    string search;    // искомое слово
    string result;    // результат поиска
    string filename = "file.txt"; // имя файла
 
    // файл в котором будет осуществляться поиск
    ifstream *in = new ifstream(filename);
    if(in->fail())
    {
        cout << "file '" << filename << "' not found" << endl << endl;
        system("pause");
        return 1;
    }
 
    // пользователь вводит искомое слово
    cout << "enter search  word in proposal: ";
    cin  >> search;
 
    // записываю содержимое файла
    if(in->is_open())
    {
        while(!in->eof())
            text += in->get();
 
        in->close();
    }
    delete in;
    
    // позиция с кот осущ поиск
    int find_pos = text.find(search);
    // если слова не существует - сообщаю об этом
    if(find_pos == -1)
    {
        cout << "entered word is not found!!!" << endl << endl;
        system("pause");
        return 1;
    }
 
    // ищу начало строки
    for(int i = find_pos; ; i--)
    {
        if( text[i] != '!' && text[i] != '.' && 
            text[i] != '?' && i != 0) 
            find_pos--;
        else 
        { 
            find_pos = i;
            if(find_pos > 0) find_pos++;
            break; 
        }
    }
    // записываю строку
    for(int i = find_pos; ; i++)
    {
        if( text[i] != '!' && text[i] != '.' && text[i] != '?' &&
            (int)text[i] != -1)
        {
            if(i == find_pos && text[i] == ' ') continue;
            result += text[i];
        }
        else break;
    }
 
    // вывожу результат
    cout << result << endl << endl;
 
    system("pause");
    return 0;
}
Olechka1991
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
25.04.2012, 22:40  [ТС]     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #3
C++
1
ifstream *in = new ifstream(filename);
ругается на эту строчку

Добавлено через 4 минуты
C++
1
ifstream *in = new ifstream(filename);
ругается на эту строчку
[C++ Error] Unit1.cpp(14): E2285 Could not find a match for 'ifstream::basic_ifstream(string)'
extenup
53 / 53 / 3
Регистрация: 12.11.2011
Сообщений: 109
25.04.2012, 23:03     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #4
Попробуйте вот так
C++
1
2
3
4
5
6
7
8
// файл в котором будет осуществляться поиск
    ifstream *in = new ifstream(filename.c_str());
    if(in->fail())
    {
        cout << "file '" << filename << "' not found" << endl << endl;
        system("pause");
        return 1;
    }
Olechka1991
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
25.04.2012, 23:20  [ТС]     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #5
а как сделать чтобы она все предложения выводила с заданным словом?
extenup
53 / 53 / 3
Регистрация: 12.11.2011
Сообщений: 109
26.04.2012, 00:07     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #6
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    string text = ""; // текст записанный из файла
    string search;    // искомое слово
    string result;    // результат поиска
    string filename = "file.txt"; // имя файла
 
    // файл в котором будет осуществляться поиск
    ifstream *in = new ifstream(filename.c_str());
    if(in->fail())
    {
        cout << "file '" << filename << "' not found" << endl << endl;
        system("pause");
        return 1;
    }
 
    // пользователь вводит искомое слово
    cout << "enter search  word in proposal: ";
    cin  >> search;
    cout << "-------------------------------------" << endl;
 
    // записываю содержимое файла
    if(in->is_open())
    {
        while(!in->eof())
            text += in->get();
 
        in->close();
    }
    delete in;
    
    while(1)
    {
        int begining_pos = text.find(search); // ночало строки
        int crt_pos;                          // текущая позиция
 
        crt_pos = text.find(search); // ищу позицию искомого слова
        if(crt_pos == -1) break;     // если предложений с таким словом нет, 
                                     // то выхожу из цикла
 
        // ищу начало строки
        for(int i = crt_pos; ; i--)
        {
            if( text[i] != '!' && text[i] != '.' && 
                text[i] != '?' && i != 0) 
                begining_pos--;
            else 
            { 
                crt_pos = i;
                if(crt_pos > 0) begining_pos++; // ночало строки
                break; 
            }
        }
        // записываю строку
        for(crt_pos = begining_pos; ; crt_pos++)
        {
            if( text[crt_pos] == '!' || text[crt_pos] == '.' || 
                text[crt_pos] == '?' || (int)text[crt_pos] == -1)
            {
                result += text[crt_pos];
                break;
            }
 
            if(crt_pos == begining_pos && text[crt_pos] == ' ') continue;
            result += text[crt_pos]; // записал строку в 'result'
        }
 
        // вывожу результат
        cout << result << endl << endl;
 
        text.erase(begining_pos, crt_pos + 1); // удаляю из текста найденую строку
        result = ""; // очищаю результат
    }
 
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2012, 07:22     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово
Еще ссылки по теме:

C++ Вывести только предложения, содержащие введенное слово (исправить)
Вывести на экран предложения из файла, которые содержат введенное с клавиатуры слово C++
Считать текст из файла и вывести на экран только предложения, которые содержат введенное с клавиатуры слово C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
26.04.2012, 07:22     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово #7
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
#include <iostream>
#include <fstream>
#include <string>
int main()
{        size_t fpos = 0, loop = 0;
         std::string str,word;
         char S;
         std::cout << "Word ? : ";
         std::cin >> word;
         std::ifstream in("file.txt");
   if (in)   { 
         in.unsetf(std::ios::skipws);
   while(in >>  S) {   
         str += S;
        if(S == '.'|| S == '!' || S == '?'){
        fpos = str.find(word);
  if    (std::string::npos != fpos 
         && !isalpha(str[fpos - 1])
         &&!isalpha(str[fpos + word.length()]))
     {
         std::cout << str << std::endl;
         loop++;
     }   str.clear();
        } } }
  else
      std::cerr<< "Error in opening file\n";
  if(!loop) std::cout << "Not found !\n";  
  in.close();
     system("pause");
     return 0;
}
Yandex
Объявления
26.04.2012, 07:22     Считывание текста из файла и вывод на экран только предложения содержащие введенное с клавиатуры слово
Ответ Создать тему
Опции темы

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