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

Работа с файлами. Чтение из файла.Поиск. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Rofl
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 22
02.03.2011, 19:58     Работа с файлами. Чтение из файла.Поиск. #1
Нужно создать программу, которая считывает слова с одного файла (словарь) и находит эти слова в другом файле (текст) и выводит на экран эти слова. В качестве примера можно хоть 1 слово в словаре и в тексте. Буду очень благодарен, спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
captain02
Сообщений: n/a
03.03.2011, 00:41     Работа с файлами. Чтение из файла.Поиск. #2
Народ поможіть зробити завдання а то я бупля в програмуванні не даю.

Програмування задач з використанням файлів умов завдань.
Програма створює на диску масив записів з даними про маршрут туристичної фірми: код путівки, країна, тривалість подорожі, ціна путівки. Вивести список путівок за вказаною ціною.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
03.03.2011, 00:48     Работа с файлами. Чтение из файла.Поиск. #3
Добавишь в эту программу 1 цикл while(условие), получишь полностью все свое задание
Сейчас работает для 1 слова.
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
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
#include <Windows.h>
 
int main()
{
    std::fstream oneWord,text;
    std::string parse_string,word,wordToFind;
    std::string::size_type beg_idx = 0, end_idx = 0;
    const std::string delim_string (" ,.?!");
    int lineNum = 0;
    oneWord.open("file.txt",std::ifstream::in);//что ищем
    text.open("text.txt",std::ifstream::in);//где ищем
    oneWord >> wordToFind;
    while(!text.eof())
    {
        lineNum++;
        beg_idx = 0, end_idx = 0;
        getline(text,parse_string);
        while(std::string::npos != (beg_idx = parse_string.find_first_not_of( delim_string, end_idx )))
        {
            if ( std::string::npos == (end_idx = parse_string.find_first_of( delim_string, beg_idx )) )
            {
                word = parse_string.substr ( beg_idx );
                if (wordToFind.compare(word)==0)
                    std::cout << wordToFind << "==" << word << "; position in text: " << beg_idx  << " at " << lineNum << " lane" << std::endl;
            }
            else
            {
                word = parse_string.substr ( beg_idx, end_idx - beg_idx );
                if (wordToFind.compare(word)==0)
                    std::cout << wordToFind << "==" << word << "; position in text: " << beg_idx  << " at " << lineNum << " lane" << std::endl;
            }
        }
    }
    system("pause");
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
03.03.2011, 10:30     Работа с файлами. Чтение из файла.Поиск. #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
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/////////////////////////////////////////////////////////////////////////////////////////
//Нужно создать программу, которая считывает слова с одного файла (словарь) 
//и находит эти слова в другом файле (текст) и выводит на экран эти слова. 
//В качестве примера можно хоть 1 слово в словаре и в тексте.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <iterator>
#include <locale>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string   T_word;
/////////////////////////////////////////////////////////////////////////////////////////
char  rus_tolower(char  c)
{
    return  std::tolower(c, std::locale(""));
}
/////////////////////////////////////////////////////////////////////////////////////////
T_word  rus_word_tolower(const T_word&  word)
{
    T_word  res_word;
    std::transform(word.begin(), word.end(), std::back_inserter(res_word), 
                   rus_tolower);
    return  res_word;
}
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_less_rus_tolower
{
    bool operator() 
        (
            const T_word&  L,
            const T_word&  R
        )
    {
        return  rus_word_tolower(L) < rus_word_tolower(R);
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::set<T_word, T_less_rus_tolower>  T_words_set;
/////////////////////////////////////////////////////////////////////////////////////////
void  check_file
    (
        const std::ifstream&  file,
        const T_word&         filename
    )
{
    if(!file) 
    {
        std::cerr << "Невозможно открыть файл \"" 
                  << filename 
                  << "\""
                  << std::endl;
        exit(EXIT_FAILURE);
    }    
}
/////////////////////////////////////////////////////////////////////////////////////////
T_words_set  get_words_set_from_file(const T_word&  file_name)
{
    std::ifstream  file(file_name.c_str());
    check_file(file, file_name); 
 
    std::istream_iterator<T_word>  file_beg(file);
    std::istream_iterator<T_word>  file_end;
    T_words_set                    res_words_set;
    std::copy(file_beg, file_end, 
              std::inserter(res_words_set, res_words_set.begin()));
    return  res_words_set;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
 
    T_word          dictionary_file_name  = "d.txt";
    T_word          text_file_name        = "t.txt";
 
    T_words_set  dictionary_words_set  = get_words_set_from_file  (dictionary_file_name);
    T_words_set  text_words_set        = get_words_set_from_file  (text_file_name);   
    
    std::cout << "В файле текста \""
              << text_file_name
              << "\" найдены следующие слова из файла словаря \""
              << dictionary_file_name
              << "\":"
              << std::endl;  
 
    std::set_intersection(
                             dictionary_words_set .begin(),  dictionary_words_set  .end(),
                             text_words_set       .begin(),  text_words_set        .end(), 
                             std::ostream_iterator<T_word>(std::cout, "\n"),
                             T_less_rus_tolower()
                         );
}
Yandex
Объявления
03.03.2011, 10:30     Работа с файлами. Чтение из файла.Поиск.
Ответ Создать тему
Опции темы

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