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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать булевую функцию http://www.cyberforum.ru/cpp-beginners/thread8135.html
как реализовать булевую функцию, то есть, функцию, которая возвращает true or false? например, есть функция определение взаимопорядка следования чисел a и b (выясняет, кто из них больше) и если a>=b, то она должна вернуть тру, а если наоборот - фолз
C++ Символы и строки. Помогите пожалуйста с решением задачи. Вводится последовательность символов. Формировать новую строку, состоящую из символов исходной строки, в которой вначале идут символы с нечетными значениями кодов, а потом с четными. http://www.cyberforum.ru/cpp-beginners/thread8124.html
помогите с прогами C++
Помогите с программами,или хотябі обьясните что нужно делать плиз:'( 1.Исходный текст записан на странице с числом символов в строке L. Переписать его на страницу с числом символов в строке M.Слова не разрывать. Считать, что текст помещается на странице целиком. 2.Поиск по шаблону: определить номер позиции в исходной строке, начиная с которой в строке содержиться шаблон S1*S2,где...
C++ помогите с поразрядной сортировкой
необходимо отсортировать методом поразрядной сортировки слова естественного языка.никак не получается.не могу разобраться. жду от вас помощи.....
C++ Сортировка двумерного массива http://www.cyberforum.ru/cpp-beginners/thread8071.html
Подскажите как отсортировать двумерный массив по возрастанию. Например дан такой массив двумерный: 9 7 4 1 2 3 5 5 5 Должен получится вот такой: 1 2 3 5 5 5
C++ Написать программу на С++, которая моделирует АЦП Нужно Написать программу на С++, которая моделирует АЦП с разрядностью т=4,8,16,24 бит. Блок АЦП должен быть формлен в виде подпрограммы и иметь собственное графическое изображение. Помогите пож-та! подробнее

Показать сообщение отдельно
Anatoliy4
Сообщений: n/a
16.05.2008, 18:44     Cоздание таблицы ключевых слов и поиск в ней
Блин забыл свой пароль - это 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;
}
 
Текущее время: 22:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru