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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Anatoliy4
Сообщений: n/a
#1

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

15.05.2008, 19:15. Просмотров 1319. Ответов 4
Метки нет (Все метки)

Не могли кто-нибудь написать программку:Cоздать таблицу ключевых слов , проходить по строке и создает в выходном массиве ссылки на позицию. Номер в таблице ключевых слов.
У меня даже есть код но там ошибки выдает.
Для профи это займет 20-30 минут.
Я просто начинающий...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2008, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cоздание таблицы ключевых слов и поиск в ней (C++):

Распознавание ключевых слов. - C++
Помогите мне необходимо составить программу распознавания мнемоник ассемблерных команд. Входной файл содержит мнемоники команд (по одной в...

Шпаргалка ключевых слов - C++
Вообще была у меня идея создать типа шпаргалки для начинающих, типа если подзабыл что да как запустил и подсмотрел, в добавок запомнил как...

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

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

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

Выполнение инструкций после неактивных ключевых слов - C++
Всем доброго времени суток, начал буквально вот вчера изучать С++ и столкнулся с такой проблемой: инструкции в скобках после if()...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Anatoliy4
Сообщений: n/a
15.05.2008, 19:18 #2
Заранее юольшое спасибо!!!
MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
16.05.2008, 15:18 #3
меньше
давайте свой код
0
Anatoliy4
Сообщений: n/a
16.05.2008, 18:44 #4
Блин забыл свой пароль - это 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;
}
Kasatik
Сообщений: n/a
15.12.2008, 06:56 #5
Люди помогите пожалуста с одним из заданий с курсового плиз!!!
1)Описать структуру с именем ZNAK, содержащую следующие поля:
NAME — фамилия, имя;
ZODIAC — знак Зодиака;
BDAY — день рождения (массив из трех чисел).
2)Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BOOK, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по знакам Зодиака;
вывод на экран информации о людях, родившихся в месяц, значе-ние которого введено с клавиатуры; если таких нет, выдать на дисплей соответствующее сообщение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2008, 06:56
Привет! Вот еще темы с ответами:

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

Подсчитать и вывести на экран число слов в ней, а затем и каждое отдельное слов - C++
Помогите с кодом: Введите с клавиатуры строку символов, после чего подсчитайте и выведите на экран число слов в ней, а затем и каждое...

Выделение в исходном коде программы ключевых слов языка и операторов языка по словарю - C++
Разбор исходного текста на языке программирования. Выделение в исходном коде программы ключевых слов языка и операторов языка по словарю....

Ввести строку из нескольких слов и найти в ней заданное слово - C++
Ввести строку из нескольких слов и найти в ней заданное слово( введённое с клавиатуры) вывести сколько раз оно встечается в строке. Не...


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

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

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