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

Обработка текста и вывод в отдельный файл - C++

Восстановить пароль Регистрация
 
MrakSPb
12 / 12 / 1
Регистрация: 14.12.2009
Сообщений: 8
19.12.2009, 16:24     Обработка текста и вывод в отдельный файл #1
Добрый день! Есть задание:

В текстовом файле имеется словарь (каждое слово на отдельной строке). Найти в нем слова, которые могут быть полностью составлены из двух и более других слов. Найденные слова (вместе со словами, из которых они составляются) вывести в выходной файл, например:
БАЛКОН=БАЛ+КОН
БАРСУК=БАР+СУК
Прошу помочь с реализацией на C++. Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
19.12.2009, 17:58     Обработка текста и вывод в отдельный файл #2
выложи фаил со словами
MrakSPb
12 / 12 / 1
Регистрация: 14.12.2009
Сообщений: 8
19.12.2009, 18:02  [ТС]     Обработка текста и вывод в отдельный файл #3
TanT,
Вложения
Тип файла: txt input.txt (56 байт, 21 просмотров)
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
19.12.2009, 20:27     Обработка текста и вывод в отдельный файл #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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    char *File="input.txt";
    string str;
    vector<string> dictionary, buf;
    bool flag;
 
    ifstream f(File);
    if (!(f.is_open()))  // проверка наличия файла с тестом
    { cout<<"ERROR: not file "<<File; system("PAUSE"); exit(1); }
 
    ofstream fileOut;   fileOut.open("output.txt");
 
 
    while(!f.eof()) // чтении из файла
    {   
        getline(f, str);
        dictionary.push_back(str);
    }
 
    for (vector<string>::iterator word=dictionary.begin(); word!=dictionary.end(); word++)
    {
        flag=false; // 
        str=*word;
        //cout<<"*word__: "<<*word<<endl;
        buf.clear();
        do
        {
            for (vector<string>::iterator it=dictionary.begin(); it!=dictionary.end(); it++)
            if(((*word).length()>(*it).length())&&(str.length()>=(*it).length()))   
                if(str.find((*it))==0) 
                {
                //  cout<<"*it: "<<*it<<" ";
                //  cout<<"bstr: "<<str<<" ";
                    str=str.substr((*it).length()); 
                    //cout<<"astr: "<<str<<" ";
                    flag=true;
                    buf.push_back(*it);
                    //cout<<"find&cut: "<<str<<endl;
                    break;
                }
        }while (flag&&(!str.empty()));  // цикл выполняется пока за проход находиться слово которое содержиться в искомом слове
 
        if ((!buf.empty())&&(str.empty()))  // 
        {
            fileOut<<*word<<":";
            for (vector<string>::iterator b=buf.begin(); b!=buf.end(); b++)
                fileOut<<" "<<*b;
            fileOut<<endl;
        }
    }   // end for (vector<string>::iterator word
        
 
    f.close();
    //cout << endl;
    //system("PAUSE");
    return 0;
}
MrakSPb
12 / 12 / 1
Регистрация: 14.12.2009
Сообщений: 8
19.12.2009, 20:49  [ТС]     Обработка текста и вывод в отдельный файл #5
TanT, спасибо за отзывчивость и оперативность!

Возможно ли сделать так, чтобы программа работала без учета регистра?
И желательно без использования библиотек <vector>, <algorithm>.. Просто боюсь не смогу объяснить преподавателю принцип работы алгоритма
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
20.12.2009, 14:55     Обработка текста и вывод в отдельный файл #6
как раз если городить без <vector>, <algorithm>, то точно не объяснишь, лучше почитай что делает sort и для чего нужен vector.

без учёта регистра сделать можно, но сложнее. можно использовать дополнительный массив который будет хранить слова переведённые в один регистр и уже работать с ним, потом заложить возможность определить соответствие изначальных слов словам из дополнительного массива.
Yandex
Объявления
20.12.2009, 14:55     Обработка текста и вывод в отдельный файл
Ответ Создать тему
Опции темы

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