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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
G@F$ik
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 5
#1

Создание чайнворда - C++

17.05.2010, 22:48. Просмотров 1864. Ответов 4
Метки нет (Все метки)

Дорогие друзья, самая голимая(извиняюсь за это слово, лучше не подобрал) тема, которую можно было цепануть для курсача, это та, которая досталась мне - программа, генерирующая чайнворд. Слова для генерации выбираются из словаря, который прилагается к проге
Чайнворд, для пояснения, это набор слов, второе слово начинается на букву, которой заканчивается первое слово, третье - на букву, которой заканчивается второе и т.д.
Первое слово, насколько я понял берется либо по желанию пользователя, либо из базы рандомно, подкиньте идею как организовать сам процесс генерации(имею в виду техническую сторону) ,может рекурсия тут подойдет, в общем кричу сос, зову на помощь(((

Добавлено через 5 минут
ЗЫ в С++ немного разбираюсь, кода всей проги не прошу, т.к. понимаю всю сложность, буду рад хотя бы какому-нибудь адекватному алгоритму)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2010, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание чайнворда (C++):

Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД) - Программирование Android
В задание для курсовой работы по БД входят вот такие пункты: 1.2 Создание функции БД. 1.3 Создание процедуры БД 1.4 Создание...

Server 2003 Хочу освоить и применить на практике создание локальной сети, создание домена - Windows Server
Доброго времени суток. Господа, на днях начал осваиваю win server 2003. Хочу освоить и применить на практике создание локальной сети,...

Создание БД учет заявок на доступ к информационным ресурсам: создание отчетов - MS Access
Доброго времени суток. Это всего вторая моя попытка что-то наваять в MS Access, сильно не пинайте. Задача: сделать БД по учету...

Создание кода из строк или создание произвольного количества объектов - Java ME
Привет сообществу. Возник такой вопрос: Мне в мидлете необходимо создать некоторое количество StringItem, заранее неизвестное, то бишь...

Создание формулы и последующее заполнение таблицы, избежание повторов информации, создание интерфейса - MS Access
Не люблю просить о помощи, но, к сожалению, сроки поджимают и не позволяют подробно ознакомиться с профессиональной литературой по MS...

Создание базы данных на лету, создание и заполнение таблиц в базе DB (Paradox? или..). - C#
Здравствуйте Профи! --- Видел я "простенькую" (exe-шник небольшого размера, запускается сразу, без предварительной установки)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lordtosha
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 3
20.12.2010, 21:50 #2
G@F$ik, У меня та же тема, что и у тебя, нашёл решение?
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
21.12.2010, 14:11 #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
//////////////////////////////////////////////////////////////////////////////////////
//программа, генерирующая чайнворд. Слова для генерации выбираются из словаря, 
//который прилагается к проге
//Чайнворд, для пояснения, это набор слов, второе слово начинается на букву, 
//которой заканчивается первое слово, третье - на букву, которой 
//заканчивается второе и т.д.
//////////////////////////////////////////////////////////////////////////////////////
//Из заданного множества слов программа строит чайнворд максимально возможной длины.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <set>
#include <string>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
class  T_word_node;
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string                T_word;
typedef std::vector<T_word>        T_words;
typedef T_words                    T_chainword;
typedef std::vector<T_word_node*>  T_children_ptrs;
typedef std::set<T_word>           T_words_tail;
//////////////////////////////////////////////////////////////////////////////////////
class  T_word_node
{   
    T_words_tail     words_tail_;    
    T_chainword      chainword_;        
    T_children_ptrs  children_ptrs;    
    static size_t    chainword_size_max_;
public:
    //---------------------------------------------------------------------------------
    T_word_node
        (
            const T_words_tail&  words_tail_,
            const T_chainword&   chainword_ = T_chainword()
        ) 
        : words_tail_(words_tail_), chainword_(chainword_)
    {
        chainword_size_max_ = std::max(chainword_size_max_, chainword_.size());   
        make_children();
    }
    //---------------------------------------------------------------------------------
    ~T_word_node()
    {
        for(T_children_ptrs::const_iterator  chaild_p_it = children_ptrs.begin();
            chaild_p_it != children_ptrs.end(); ++chaild_p_it)
        {
            delete  *chaild_p_it;
        }        
    }
    //---------------------------------------------------------------------------------
    bool  get_chainword(T_chainword&  chainword)
    {
        if(chainword_.size() == chainword_size_max_)
        {
            chainword = chainword_;
            return  true;
        } 
 
        for(T_children_ptrs::const_iterator  chaild_p_it = children_ptrs.begin();
            chaild_p_it != children_ptrs.end(); ++chaild_p_it)
        {
            if((**chaild_p_it).get_chainword(chainword))
            {
                return  true;
            }
        }
        return  false;
    }
    //---------------------------------------------------------------------------------
private:
    //---------------------------------------------------------------------------------
    void  make_child_with_word(const T_word&  word)
    {
        T_words_tail  words_tail_new(words_tail_);                
        words_tail_new.erase(word);
        T_chainword  chainword_new(chainword_);
        chainword_new.push_back(word);
        T_word_node*  word_node_p 
            = new T_word_node(words_tail_new, chainword_new);
        children_ptrs.push_back(word_node_p);                
    }
    //---------------------------------------------------------------------------------
    void  make_children()
    {       
        for(T_words_tail::const_iterator  word_it = words_tail_.begin();
            word_it != words_tail_.end(); ++word_it)
        {
            if(   chainword_.empty()
               || *word_it->begin() == *chainword_.rbegin()->rbegin()) 
            {
                make_child_with_word(*word_it);
            }            
        }        
    }
};
size_t  T_word_node::chainword_size_max_ = 0;
//////////////////////////////////////////////////////////////////////////////////////
T_chainword  make_chainword(const T_words&  words)
{
    T_words_tail  words_tail(words.begin(), words.end());
    T_word_node   chainword_tree(words_tail);
    T_chainword   chainword_res;
    chainword_tree.get_chainword(chainword_res);
    return  chainword_res;
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const int N_MIN = 1;
    int n = 0;
    do
    {
        std::cout << "Введите количество слов в словаре для чайнворда: ";
        std::cin >> n;             
    }while(n < N_MIN);   
 
    std::cout << "Введите " 
              << n
              << " слов для чайнворда:"
              << std::endl;
 
    T_words  words;
    while(words.size() < static_cast<size_t>(n))
    {
        std::cout << "#"
                  << words.size() + 1
                  << ": ";
 
        T_word  word_cur;
        std::cin >> word_cur;
        words.push_back(word_cur);       
    }
    T_chainword  chainword_ = make_chainword(words);
    std::cout << "Чайнворд:"
              << std::endl;
 
    std::copy(chainword_.begin(), chainword_.end(), 
              std::ostream_iterator<T_word>(std::cout, "\n"));
}
lordtosha
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 3
21.12.2010, 14:14 #4
Mr.X, Спасибо вам огромное
Banner
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 3
19.12.2014, 22:30 #5
Mr.X, Прошу прощение, не могли бы вы расписать в этой программе комментарии к действиям , чтобы лучше понять
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2014, 22:30
Привет! Вот еще темы с ответами:

Создание источника данных, создание серверных страниц и выбор WEB-сервера и его установка - Web
на практике попросили сделать задание. 1)Создание источника данных 2)Создание серверных страниц 3)Выбор WEB-сервера и его установка ...

Создание экземпляра БД (создание собственно базы данных) - Oracle
Добрый день. Подскажите пожалуйста, я пытаюсь установить Oracle Database 11g Release 2. Следую этой инструкцией...

Файлы. Создание и размещение небольшого текста, создание двух дочерних процессов, вывод результи- рующего файла на экран - C Linux
Помогите пожалуйста с программой. Разработайте программу, выполняющую: 1) создание файла и размещение в нем небольшого текста; 2)...

Создание запроса на создание таблицы - MS Access
есть база данных, в которой имеется одна таблица, необходимо создать запрос на создание новой таблицы, значения которой будут высчитываться...


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

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

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