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

Cоздание таблицы ключевых слов и поиск в ней - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать булевую функцию http://www.cyberforum.ru/cpp-beginners/thread8135.html
как реализовать булевую функцию, то есть, функцию, которая возвращает true or false? например, есть функция определение взаимопорядка следования чисел a и b (выясняет, кто из них больше) и если...
C++ Символы и строки. Помогите пожалуйста с решением задачи. Вводится последовательность символов. Формировать новую строку, состоящую из символов исходной строки, в которой вначале идут символы с нечетными значениями... http://www.cyberforum.ru/cpp-beginners/thread8124.html
C++ Перегрузка операторов и полиморфизм
Есть массив указателей Data* в каждой ячейке которого указатель на string,int или float Никак не получается перегрузить оператор + так чтобы string+string оставался string int+float оставался float...
C++ Определить, есть ли в тексте указанное слово, и заключить его в квадратные скобки
Дан многострочный текст. Определить, есть ли в нем указанное слово и заключить его в квадратные скобки.
C++ помогите с прогами http://www.cyberforum.ru/cpp-beginners/thread8083.html
Помогите с программами,или хотябі обьясните что нужно делать плиз:'( 1.Исходный текст записан на странице с числом символов в строке L. Переписать его на страницу с числом символов в строке...
C++ помогите с поразрядной сортировкой необходимо отсортировать методом поразрядной сортировки слова естественного языка.никак не получается.не могу разобраться. жду от вас помощи..... подробнее

Показать сообщение отдельно
Anatoliy4
Сообщений: n/a
16.05.2008, 18:44
Блин забыл свой пароль - это Anatoliy4
вот собственно код
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
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
 
#define EOS -1      //Конец строки(возвращаеться функцией get_word)
 
using namespace std;
 
class dict_el{          //Элемент словаря (слово и его позиции)
public:
    dict_el():Word(""){};           //Конструсторы
    dict_el(string wd):Word(wd){};  
    ~dict_el(){};               //Деструктор
    
    void add_pos(const int i){      //Добавить позицию
            this->pos.push_back(i);
        };
    
    bool operator==(const string& str){ // сравнение со строкой для алгоритма find
        return (this->Word == str)? true:false;
    }
    friend ostream& operator<<(ostream& cout, dict_el& rhs);    //Вывод слова и его позиций
private:
    string  Word;               //Хранимое слово
    vector<int> pos;            //Позиции для хранимого слова
    
};
 
ostream& operator<<(ostream& cout, dict_el& rhs){   //Вывод слова и его позиций
    cout << rhs.Word << ": ";
    vector<int>::iterator i;
    for (i = rhs.pos.begin(); i != rhs.pos.end(); ++i)
        cout << *i << " ";      //Выводит слово : и его позиции
    return cout;
}
 
int get_word(string& str,string& res){          //получить следующее слово
    static int current=0;               //текущая позиция
    int i;
    
    while(isspace(str[current]) ) {
        ++current;          //пропустить все знаки пробел,
    }                   //переход строки и т.д.
    
    if (str[current] == '\0') return EOS;   //достигнут конец строки
    
    i = current;                //начало нового слова
    res="";                     
    while(!isspace(str[current]) && str[current] != '\0'){//считывать слово до конца
        res+=tolower(str[current++]);       //и записывать его в res
    }
    return i;                       //вернуть позицию слова         
}
 
void parse_str(string& str, vector<dict_el>& dict){     //Разбор строки и формирование словаря
    string temp;                    //следующее слово
    int position;                   // и его позиция
    vector<dict_el>::iterator i;    
    
    while((position=get_word(str,temp)) != EOS){    //Пока не дошли до конца  строки получить следующее слово                
        i = find(dict.begin(),dict.end(),temp); //искать это слово в словаре
        
        if (i == dict.end()){           //если такого слова нет
            dict_el A(temp);            //создать его
            A.add_pos(position);        //ввести первую позицию
            dict.push_back(A);      //и добать в словарь
        }
        else{                   //если слово уже есть
            (*i).add_pos(position);     //добавть к нему новую позицию
        }
    }
}
 
 
 
//Начало программы
int main(){
    string str="Testing my Testing my program\0";   //Строка для разбора
    vector<dict_el> dict;               //Словарь
    
    parse_str(str,dict);                //Создать словарь
    
    vector<dict_el>::iterator i;
    
    for(i = dict.begin(); i != dict.end(); ++i){               //Вывести словарь
        cout << *i << endl;
    }
    
    
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru