Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Создать квадратную матрицу порядка n Создать квадратную матрицу порядка n https://www.cyberforum.ru/ cpp-beginners/ thread1261568.html Перевод строки string в число C++
Добрый день. В результате получают -1, если z и y делаю типа double то в результате получаю 0 int strtoint (std::string st) { int i,z,y; z=1; for (i = 1; i < st.size(); i++) { z=z*10; } //z=pow(10,(double) st.size()-1);
C++ Оптимизировать код Доброго времени суток, как можно оптимизировать код что бы он быстрее работал ? Дана последовательность из n чисел a1, a2,..., an. C ней последовательно производят k операций: на i-ом шаге из этой последовательности одновременно вычеркивают все числа, стоящие на позициях с номерами, кратными bi (позиции нумеруются с 1). Ваша задача — промоделировать это процесс и вывести массив после... https://www.cyberforum.ru/ cpp-beginners/ thread1261540.html C++ Создать третий массив, в который переписать элементы первых двух https://www.cyberforum.ru/ cpp-beginners/ thread1261489.html
Даны два массива: mas1 и mas2 . Создать третий массив, в который переписать элементы массива mas1, а затем mas2. Полученный массив упорядочить по возрастанию. Спасайте ребята, почините что не так, сижу на лабе. До конца пары 20 минут, пожалуйста. #include <iostream> #include <conio.h> #include <time.h> using namespace std; void bubble(int array, int size)
LU-разложение - найти ошибки в коде C++
Всем добра, вот программа, но она работает не правильно подскажите, что не так #include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> using namespace std; int main () {
C++ Заменить в массиве первый элемент Ребят помогите) Заменить в массиве первый элемент, кратный 5, нулем. https://www.cyberforum.ru/ cpp-beginners/ thread1261482.html
C++ Как вычислить 2 в степени длинного числа? https://www.cyberforum.ru/ cpp-beginners/ thread1261479.html
Посчитать 2 в степени длинного числа.
Определить радиус основания цилиндра для значения h C++
Помогите написать код программы. Цилиндр обьема единица имеет высоту h. Определить радиус основания цилиндра для значения h, равных 0.5,1,1.5,...,5.
C++ Сделать так, что бы при неверном значении программа сообщала об этом и запускала функцию второй раз Возникла проблема в программе. void rasa (int classa) это функция которая принимает число 1-2-3 и в зависимости от числа отправляет нужное значение обратно, но проблема в том что если пользователь введёт иное число <1, >3 то программа напишет что значение не верно и всё на этом. Нужно сделать так что бы при не верном значение программа писала о том что значение не верно и запускала функцию... https://www.cyberforum.ru/ cpp-beginners/ thread1261460.html C++ Электронные станции: радиальные, кольцевые и смешанные виды связей между ними Нужно написать начало проги, помогите пожалуйста! Существует 15 станции, и 60 вариантов в каждом варианте выбраны 6 станции из 15 и в каждом варианте мощность станции разная. Существует так же связи между станциями! Например 1 вариант:даны станции 1,2,3,4,5,6 и связи между ними могут быть самыми разными, например 1-2,4-6,5-3,3-2,4-2. В проге я должен выбрать какие станции даны, из 15 выбрать 6,... https://www.cyberforum.ru/ cpp-beginners/ thread1261454.html
Найти сумму нечетных делителей C++
Помогите) С++ Найти сумму нечетных делителей введенного с клавиатуры натурального числа.
C++ Формула к уравнению Помогите написать код к этому примеру https://www.cyberforum.ru/ cpp-beginners/ thread1261442.html
Эксперт С++
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.09.2014, 09:05 0

Дискретная математика. Класс-Группа:множество+бинарная операция - C++ - Ответ 6655735

28.09.2014, 09:05. Показов 2624. Ответов 3
Метки (Все метки)

Ответ

delete

Добавлено через 7 минут
Первая часть:
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cmath>
#include <functional>
#include <iostream>
#include <iterator>
#include <map>
#include <numeric>
#include <set>
#include <utility>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
template
    <
        typename    T_elem,
        typename    T_less,
        typename    T_bin_op,
        typename    T_inverse_elem,
        typename    T_print_elem
    >
class   T_group
{
    //-----------------------------------------------------------------------------------
    static  const   int     MAX_GROUP_SIZE  =   10;
    //-----------------------------------------------------------------------------------
    typedef std::set    < T_elem,                       T_less  >   T_elements;
    typedef std::map    < T_elem,           T_elem,     T_less  >   T_inverse_element_of;
    typedef std::pair   < T_elem,           T_elem              >   T_elements_pair;
    typedef std::map    < T_elements_pair,  T_elem              >   T_product_of_elements;
    //-----------------------------------------------------------------------------------
    T_elements                  elements_;
    T_inverse_element_of        inverse_element_of_;
    T_product_of_elements       product_of_elements_;
    T_elem                  *   identity_element_ptr_;
    bool                        generation_is_stopped_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_group( T_elements     const   &   elements )
        :
        elements_               ( elements  ),
        identity_element_ptr_   ()
    {
        generate_elements();
    }
    //-----------------------------------------------------------------------------------
    ~T_group()
    {
        delete  identity_element_ptr_;
    }
    //-----------------------------------------------------------------------------------
    int     size()                                                                  const
    {
        return  elements_.size();
    }
    //-----------------------------------------------------------------------------------
    void    print()                                                                 const
    {
        T_print_elem    print_elem;
 
        if( generation_is_stopped_ )
        {
            std::cout   <<  "Генерация элементов группы приостановлена."
                        <<  std::endl;
        }//if
 
        std::cout   <<  "Группа состоит из "
                    <<  size()
                    <<  " элементов"
                    <<  std::endl
                    <<  std::endl
                    <<  "Нейтральный элемент: "
                    <<  std::endl;
 
        if  (
                get_identity_element_ptr()
            )
        {
            print_elem
                (
                    *get_identity_element_ptr()
                );
        }
        else
        {
            std::cout   <<  "не сформирован"
                        <<  std::endl;
        }//else
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  "Элемент"
                    <<  "\t\t\t"
                    <<  "Обратный элемент"
                    <<  std::endl;
 
        std::for_each
            (
                inverse_element_of_.begin   (),
                inverse_element_of_.end     (),
 
                [=]                         ( T_inverse_element_of::value_type  const   &  elem_and_this_inv_elem )
                {
                    print_elem( elem_and_this_inv_elem.first    );
                    std::cout   <<  '\t';
                    print_elem( elem_and_this_inv_elem.second   );
                    std::cout   <<  std::endl;
                }
            );
 
        std::cout   <<  std::endl
                    <<  "Произведения элементов"
                    <<  std::endl;
 
        std::for_each
            (
                product_of_elements_.begin  (),
                product_of_elements_.end    (),
 
                [=]                         ( T_product_of_elements::value_type  elements_pair_and_their_product )
                {
                    print_elem( elements_pair_and_their_product     .first.first    );
                    std::cout   <<  "\t* ";
                    print_elem( elements_pair_and_their_product     .first.second   );
                    std::cout   <<  "\t= ";
                    print_elem( elements_pair_and_their_product     .second         );
                    std::cout   <<  std::endl;
                }
            );
    }
    //-----------------------------------------------------------------------------------
    T_elem  const   &   mult
        (
            T_elem  const   &   L,
            T_elem  const   &   R
        )
    {
        T_bin_op    bin_op;
        auto    elem_pair   =   std::make_pair( L, R );
        auto    it          =   product_of_elements_.find( elem_pair );
 
        return  it  ==  product_of_elements_.end()
                    ?   product_of_elements_[ elem_pair ]   =   bin_op( L, R )
                    :   product_of_elements_[ elem_pair ];
    }
    //-----------------------------------------------------------------------------------
    T_elem  *   get_identity_element_ptr()                                      const
    {
        return  identity_element_ptr_;
    }
    //-----------------------------------------------------------------------------------
    T_elem  const   &   get_inverse_element( T_elem    const   &   elem    )
    {
        T_inverse_elem  inverse_elem;
        auto    it      =   inverse_element_of_.find( elem );
 
        if  (
                it  ==  inverse_element_of_.end()
            )
        {
            inverse_element_of_[ elem ]   =   inverse_elem( elem );
 
            if  (
                        inverse_element_of_[ elem ]     ==  elem
                    &&  !identity_element_ptr_
                )
            {
                identity_element_ptr_    =   new     T_elem (
                                                                inverse_element_of_[ elem ]
                                                            );
            }//if
        }//if
 
        return  inverse_element_of_[ elem ];
    }
    //-----------------------------------------------------------------------------------
    T_elem  left_division
        (
            T_elem  const   &   L,
            T_elem  const   &   R
        )
    {
        return  mult    (
                            get_inverse_element( R ),
                            L
                        );
    }
    //-----------------------------------------------------------------------------------
    T_elem  right_division
        (
            T_elem  const   &   L,
            T_elem  const   &   R
        )
    {
        return  mult    (
                            L,
                            get_inverse_element( R )
                        );
    }
    //-----------------------------------------------------------------------------------
private:
    //-----------------------------------------------------------------------------------
    //Из математики известно, что множество с определенной на нем ассоциативной операцией
    //является группой только в том случае, если на этом множестве выполняется левое и правое 
    //деление для любых двух его элементов.
    //В данной процедуре выполняется левое и правое деление для элементов стартового множества,
    //пока не будут получены все элементы группы, или пока процесс не будет приостановлен 
    //из-за превышения заданного предельного количества элементов группы.
    void    generate_elements()
    {
        int     old_elements_size   =   0;
        generation_is_stopped_      =   false;
 
        do
        {
            old_elements_size   =   elements_.size();
 
            for (
                    auto
                    L_elem_it     =   elements_.begin     ();
                    L_elem_it     !=  elements_.end       ();
                    ++L_elem_it
                )
            {
                for (
                        auto
                        R_elem_it     =   elements_.begin     ();
                        R_elem_it     !=  elements_.end       ();
                        ++R_elem_it
                    )
                {
                    elements_.insert
                        (
                            left_division   ( *L_elem_it,   *R_elem_it )
                        );
 
                    elements_.insert
                        (
                            right_division  ( *L_elem_it,   *R_elem_it )
                        );
 
                    if  (
                            elements_.size()    >   MAX_GROUP_SIZE
                        )
                    {
                        generation_is_stopped_  =   true;
                        break;
                    }
                }//for
            }//for
        }while  (
                    elements_.size()    !=  old_elements_size
                );
    }
    //-----------------------------------------------------------------------------------
};


Вернуться к обсуждению:
Дискретная математика. Класс-Группа:множество+бинарная операция C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2014, 09:05
Готовые ответы и решения:

Нужна помощь по Дискретке. Класс-группа: множество + бинарная операция
Здравствуйте. В этом году в академии начали преподавать дискретную математику. Что-то не очень...

Дискретная математика.Образует ли группу множество комплексных чисел с модулем 2 относительно операции умножения?
Образует ли группу множество комплексных чисел с модулем 2 относительно операции умножения?

Описать класс "Бинарная арифметическая операция"
Описати клас “двооперандна арифметична операція”, який характеризується двома операндами....

Дискретная математика - ложная наука. Математика должна быть радикально изменена
Вопрос для всех: Где источник числовой информации для практических целей? Математиков, решающих...

3
28.09.2014, 09:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2014, 09:05
Помогаю со студенческими работами здесь

Бинарная(побитовая) операция
Мне нужно написать функцию которая проверяет значение есть парным или нет bool IsEven(unsigned...

Математика для программиста, Выш.мат, Дискретная математика, Мат.Статистика
Всем качественного контента, дело такое, сижу на 3м курсе.. В Бикини ботоме... По Прог. Обуч-я...

дискретная математика
кто может помочь решить 3 задачи: - Найти разложение (a+b)n.

Дискретная математика
Помогите решить первое задание. Не шарю как записать это все в с++ A-B|Dдизьюнкция C-A...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru