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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ файлы http://www.cyberforum.ru/cpp-beginners/thread131350.html
Реализовать программу для сохранения данных о клиентах фирмы (фамилия, инициалы, год рождения, адрес (город, улица, дом) ).
C++ Заполнить двумерный массив неизвестной длины Всем привет, пишу на C#, надо срочно написать код на С++ и я тупо ничего не догоняю ) Необходимо заполнить двумерный массив неизвестной длины. Как это можно осуществить средствами С++ ? Насколько я знаю, в C# нельзя динамически менять значения созданного массива типа int, НО, можно изменить его размер так: int arr = new int; или же скопировать старый массив в новый при помощи... http://www.cyberforum.ru/cpp-beginners/thread131341.html
C++ Двусвязный линейный список
Помогите пожалуйста написать эти программы :( Двусвязный линейный список, Быстрая сортировка ,Пузырьковая с удалением/дополнением , двоичный поиск в массиве,Тип файла Двоичный , Структура данных Массив направление сортировки-обратное
C++ Удаление элемента из линейного однонапраленного списка.
Говорят, что существует множество способов удаления из списка. Вот один из них: void los::del_el() { int key; los *q, *w, *e; cout << "vvedite key: "; cin >> key; q=p;
C++ Не могу понять ошибка ли это? http://www.cyberforum.ru/cpp-beginners/thread131325.html
МЕТОД Ньютона Зашел в тему, но по моему тут ошибка либо, я что то не пойму... При взятии производной от исходной функции double f(double x) { x*x-(cos(pi*x)); }
C++ тест как можно сделать простой тест на С++ Builder,3 возможных варианта ответа, 1 правильный выбор в CheckBox ? тольк отбросив вариант когда вопросы задаются в коде !знаю есть способ с помощью подключения текст файликов но незнаю как сделать ! подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3039 / 1684 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
21.12.2010, 14:11     Создание чайнворда
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"));
}
 
Текущее время: 00:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru