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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Vla00
6 / 6 / 3
Регистрация: 06.10.2012
Сообщений: 468
#1

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

10.12.2013, 20:16. Просмотров 1148. Ответов 5
Метки нет (Все метки)

Вообщем такое задание:
Поиск в текстовом файле всех слов, заданных в другом текстом файле;

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

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;
}
допустим я использую такие файлы:
0
Вложения
Тип файла: txt slova.txt (49 байт, 19 просмотров)
Тип файла: txt text.txt (11.9 Кб, 15 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 20:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск в текстовом файле всех слов, заданных в другом текстом файле (C++):

Составить словарь всех слов, встречающихся в заданном текстовом файле. - C++
Составить словарь всех слов, встречающихся в заданном текстовом файле. Для каждого слова определить сколько раз оно встречается. Помогите...

Сравнение слов в одном файле со словами в другом файле - C++
Здравствуйте! Суть задачи такая: 1. Первый файл - запросы с городами, второй файл - база городов РФ. Оба txt 2. Найти в запросах все...

В текстовом файле посчитать количество заданных букв - C++
Задание: &quot;В текстовом файле посчитать количество заданных букв&quot; Срочно надо, вообще ничего не понимаю.

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

Замена слов в текстовом файле - C++
Нужна помощь, как в текстовом файле изменить слово, например, &quot;Black&quot; на &quot;White&quot;?

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt - C++
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется текстовый файл 2.txt c таким...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
10.12.2013, 20:21 #2
Для первого слова из потока f_s1 внутренний цикл while перемещает указатель потока f_text в конец .
После чтения следующего слова этот указатель надо вернуть на начало потока.
0
Vla00
6 / 6 / 3
Регистрация: 06.10.2012
Сообщений: 468
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;
}
Но всё же не работает правильно
0
alsav22
5419 / 4815 / 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";
1
Vla00
6 / 6 / 3
Регистрация: 06.10.2012
Сообщений: 468
11.12.2013, 15:56  [ТС] #5
всё спасибо. работает правильно... Очень благодарен...
0
Vla00
6 / 6 / 3
Регистрация: 06.10.2012
Сообщений: 468
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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 17:49
Привет! Вот еще темы с ответами:

Подсчитать количество слов в текстовом файле - C++
дан текстовый файл, подсчитать кол-во слов в файле

Подсчитать количество слов в текстовом файле - C++
Написать программу, подсчитывающую количества слов в текстовом файле. P.C. Дайте ответ пожалуйста в rar архиве. Я не очень разбираюсь...

Поиск в текстовом файле - C++
Всем привет! Нужно на С++ написать программу,в поиске похожего не нашёл. Вот сама задача - Имеются два текстовых файла. Определить в каком...

Поиск в текстовом файле - C++
Добрый вечер еще разок. Никак не могу сообразить, как реализовать следующий алгоритм (представляю его так): есть база (назовем ее...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.12.2013, 17:49
Ответ Создать тему
Опции темы

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