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

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Vla00
5 / 5 / 3
Регистрация: 06.10.2012
Сообщений: 437
10.12.2013, 20:16     Поиск в текстовом файле всех слов, заданных в другом текстом файле #1
Вообщем такое задание:
Поиск в текстовом файле всех слов, заданных в другом текстом файле;

Не могу понять почему не работает:

C++ (Qt)
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
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
 
    ifstream f_text("text.txt");
    ifstream f_sl("slova.txt");
    if(f_sl)
    {
      string s_sl, s_text;
      while(f_sl >> s_sl)
      {
          if((*(s_sl.end() - 1) == ',') || (*(s_sl.end() - 1) == '.') || (*(s_sl.end() - 1) == ';') || (*(s_sl.end() - 1) == ':'))
          {
              s_sl.erase(s_sl.end() - 1);
          }
 
          while(f_text >> s_text)
          {
              if((*(s_text.end() - 1) == ',') || (*(s_text.end() - 1) == '.') || (*(s_text.end() - 1) == ';') || (*(s_text.end() - 1) == ':'))
              {
                  s_text.erase(s_text.end() - 1);
              }
 
              if(s_sl == s_text)
              {
                  cout<<"Слово: " << s_sl;
                  cout <<"\n";
              }
          }
      }
    }
    else cerr<<"Error";
 
    system("pause");
    return 0;
}
допустим я использую такие файлы:
Вложения
Тип файла: txt slova.txt (49 байт, 18 просмотров)
Тип файла: txt text.txt (11.9 Кб, 14 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 20:16     Поиск в текстовом файле всех слов, заданных в другом текстом файле
Посмотрите здесь:

Составить словарь всех слов, встречающихся в заданном текстовом файле. C++
C++ Поиск в текстовом файле
Подсчёт количества слов в данном текстовом файле C++
Подсчитать частоту вхождения слов в текстовом файле C++
C++ Поиск в текстовом файле
C++ В текстовом файле посчитать количество заданных букв
Подсчитать количество слов в текстовом файле C++
C++ Поиск в текстовом файле
Сравнение слов в одном файле со словами в другом файле C++
Счетчик слов в текстовом файле C++
Поиск в текстовом файле C++
Замена слов в текстовом файле C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6056 / 5659 / 1830
Регистрация: 18.12.2011
Сообщений: 14,459
Завершенные тесты: 1
10.12.2013, 20:21     Поиск в текстовом файле всех слов, заданных в другом текстом файле #2
Для первого слова из потока f_s1 внутренний цикл while перемещает указатель потока f_text в конец .
После чтения следующего слова этот указатель надо вернуть на начало потока.
Vla00
5 / 5 / 3
Регистрация: 06.10.2012
Сообщений: 437
11.12.2013, 00:49  [ТС]     Поиск в текстовом файле всех слов, заданных в другом текстом файле #3
Цитата Сообщение от zss Посмотреть сообщение
Для первого слова из потока f_s1 внутренний цикл while перемещает указатель потока f_text в конец .
После чтения следующего слова этот указатель надо вернуть на начало потока.
Сделал так как вы сказали:

C++ (Qt)
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
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
 
    ifstream f_text("text.txt");
    ifstream f_sl("slova.txt");
    if(f_sl)
    {
      string s_sl, s_text;
      while(f_sl >> s_sl)
      {
          if((*(s_sl.end() - 1) == ',') || (*(s_sl.end() - 1) == '.') || (*(s_sl.end() - 1) == ';') || (*(s_sl.end() - 1) == ':'))
          {
              s_sl.erase(s_sl.end() - 1);
          }
 
          f_text.seekg(0, ios::beg);
          while(f_text >> s_text)
          {
              if((*(s_text.end() - 1) == ',') || (*(s_text.end() - 1) == '.') || (*(s_text.end() - 1) == ';') || (*(s_text.end() - 1) == ':'))
              {
                  s_text.erase(s_text.end() - 1);
              }
 
              if(s_sl == s_text)
              {
                  cout<<"Слово: " << s_sl;
                  cout <<"\n";
              }
          }
      }
    }
    else cerr<<"Error";
 
    system("pause");
    return 0;
}
Но всё же не работает правильно
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.12.2013, 01:12     Поиск в текстовом файле всех слов, заданных в другом текстом файле #4
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
    if(f_sl)
    {
      string s_sl, s_text;
      while(f_sl >> s_sl)
      {
          if((*(s_sl.end() - 1) == ',') || (*(s_sl.end() - 1) == '.') || (*(s_sl.end() - 1) == ';') || (*(s_sl.end() - 1) == ':'))
          {
              s_sl.erase(s_sl.end() - 1);
          }
 
          while(f_text >> s_text)
          {
              if((*(s_text.end() - 1) == ',') || (*(s_text.end() - 1) == '.') || (*(s_text.end() - 1) == ';') || (*(s_text.end() - 1) == ':'))
              {
                  s_text.erase(s_text.end() - 1);
              }
 
              if(s_sl == s_text)
              {
                  cout<<"Слово: " << s_sl;
                  cout <<"\n";
              }
          }
          f_text.clear();
          f_text.seekg(0);
      }
    }
    else cerr<<"Error";
Vla00
5 / 5 / 3
Регистрация: 06.10.2012
Сообщений: 437
11.12.2013, 15:56  [ТС]     Поиск в текстовом файле всех слов, заданных в другом текстом файле #5
всё спасибо. работает правильно... Очень благодарен...
Vla00
5 / 5 / 3
Регистрация: 06.10.2012
Сообщений: 437
13.12.2013, 17:49  [ТС]     Поиск в текстовом файле всех слов, заданных в другом текстом файле #6
Цитата Сообщение от alsav22 Посмотреть сообщение
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
    if(f_sl)
    {
      string s_sl, s_text;
      while(f_sl >> s_sl)
      {
          if((*(s_sl.end() - 1) == ',') || (*(s_sl.end() - 1) == '.') || (*(s_sl.end() - 1) == ';') || (*(s_sl.end() - 1) == ':'))
          {
              s_sl.erase(s_sl.end() - 1);
          }
 
          while(f_text >> s_text)
          {
              if((*(s_text.end() - 1) == ',') || (*(s_text.end() - 1) == '.') || (*(s_text.end() - 1) == ';') || (*(s_text.end() - 1) == ':'))
              {
                  s_text.erase(s_text.end() - 1);
              }
 
              if(s_sl == s_text)
              {
                  cout<<"Слово: " << s_sl;
                  cout <<"\n";
              }
          }
          f_text.clear();
          f_text.seekg(0);
      }
    }
    else cerr<<"Error";
как можно это переделать для работы с потоками. Мне нужно теперь это задание представить с mutex
Yandex
Объявления
13.12.2013, 17:49     Поиск в текстовом файле всех слов, заданных в другом текстом файле
Ответ Создать тему
Опции темы

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