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

Множества. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Наследование и защищенные члены http://www.cyberforum.ru/cpp-beginners/thread275031.html
Добрый день всем. У меня имеется следующий набор классов Visitor <- User <- Manager <- Admin Visitor - самый базовый, надеюсь, иерархия ясна. В каждом классе есть пара виртуальных функций, меня интересует сейчас virtual bool set(User* user, char *nm) в классе Admin. Она должна по переданным параметрам менять атрибут name для переданного юзера и придавать ему значение строки nm. Проблема в...
C++ Класс для работы с матрицами 2х2 Доброго времени суток. Очень нужна ваша помощь . Мне нужно создать класс , обеспечивающий работу с матрицами 2х2 . В общем то , описание класса есть , меню для диалога с пользователем есть . Проблема в правильном вызове функций . Я никогда не занимался ООП и очень на вас надеюсь. Вот архив со всем проектом . Программа запускается , но пока ничего не делает ) Заранее спасибо за внимание и за... http://www.cyberforum.ru/cpp-beginners/thread275028.html
C++ Векторное произведение
Помогите пожалуйста написать программу на ВС31 или DevCpp, вот условие ввести коорбинаты N векторов на плоскости. Написать функцию, определяющую модуль векторного произведения двух векторов. Используя эту функцию найти максимальный модуль векторного произведения пары векторов. Алгоритм осуществить используя структуры.
C++ Модули. Многофайловые проекты
Определить функцию, возвращающую НОД нескольких чисел. Выполнить перегрузку функции для следующих типов параметров: 7.1. Два параметра типа int. 7.2. Два параметра типа long. 7.3. Два параметра типа float. 7.4. Два параметра типа double.
C++ Перегрузка функций http://www.cyberforum.ru/cpp-beginners/thread275013.html
Определить функцию, возвращающую количество недель до конца года. Выполнить перегрузку функции для следующих типов параметров: 7.1. Структура «дата» (год, месяц, день). 7.2. Три целочисленных параметра: год, месяц, день. 7.3. Два целочисленных параметра: месяц, день (считать передаваемые числа датой текущего года).
C++ Max и Min в Си++ сформировать одномерный массив целых чисел используя ДСЧ. расспечатать полученный массив поменять местами мах и мин удалить из массива все эл. превышающие его среднее значение более чем на 10% распечатать полученный массив. #include <iostream.h> #include <conio.h> подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
05.05.2011, 17:56     Множества.
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
как сделать чтобы выводило не одного человека, а несколько
Вот так можно:
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
/////////////////////////////////////////////////////////////////////////////////////////
//МНОЖЕСТВА
//1)Дано следующее описание:
//type
//nаmе=(Вася, Володя, Ира, Марина, Миша, Наташа, Оля, Света, Юля);
//visitors=set of name;
//group=array[name] of visitors;
//Написать программу, определяющую, есть в группе g:group хотя бы один человек, 
//побывавший в гостях у всех остальных из группы (g[x]-множество людей, 
//бывших в гостях у человека с именем х; х не входит в g[x]).
/////////////////////////////////////////////////////////////////////////////////////////
//  Программа выводит имена всех людей, побывавших в гостях у всех членов группы.
/////////////////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <map>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
enum  T_name
{
    Vasya,
    Volodya,
    Ira,
 
    Marina,
    Misha,
    Natasha,
 
    Olya,
    Sveta,
    Julya,
 
    names_total
};
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string                   T_str;
typedef std::set<T_name>              T_visitors;
typedef std::map<T_name, T_visitors>  T_group;
typedef std::map<T_name, size_t>      T_name_visits_total;
typedef std::map<T_name, T_str>       T_rus_name;
/////////////////////////////////////////////////////////////////////////////////////////
void  random_fill_group(T_group&  group)
{
    for(int  i = 0; i < names_total; ++i)
    {        
        T_visitors  visitors;
        for(int  j = 0; j < names_total; ++j)
        {
            if(j == i) continue;
            if(rand() % 4)
            {
                visitors.insert(T_name(j));
            }
        }
        group[T_name(i)] = visitors;
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
T_visitors  get_persons_who_has_visited_all(const T_group&  group)
{
    T_visitors           visitors_res;
    T_name_visits_total  name_visits_total;
    if(!group.empty())
    {
        for(T_group::const_iterator  host_visitors_it = group.begin();
            host_visitors_it != group.end(); ++host_visitors_it)
        {        
            for(T_visitors::const_iterator  name_it = host_visitors_it->second.begin();
                name_it != host_visitors_it->second.end(); ++name_it)
            {
                ++name_visits_total[*name_it];
            }
        }
        
        for(T_name_visits_total::const_iterator  name_visits_total_it = name_visits_total.begin();
            name_visits_total_it != name_visits_total.end(); ++name_visits_total_it)
        {
            if(name_visits_total_it->second == names_total - 1)
            { 
                visitors_res.insert(name_visits_total_it->first);
            }
        }    
    }
 
    return visitors_res;    
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    srand(static_cast<unsigned>(time(0)));
    T_rus_name  rus_name;
    rus_name[Vasya   ]  = "Вася";
    rus_name[Volodya ]  = "Володя";
    rus_name[Ira     ]  = "Ира";
 
    rus_name[Marina  ]  = "Марина";
    rus_name[Misha   ]  = "Миша";
    rus_name[Natasha ]  = "Наташа";
 
    rus_name[Olya    ]  = "Оля";
    rus_name[Sveta   ]  = "Света";
    rus_name[Julya   ]  = "Юля";
 
    T_group  group;
    random_fill_group(group);    
    T_visitors  visitors_best = get_persons_who_has_visited_all(group);
    if(visitors_best.empty())
    {
        std::cout << "В группе не существует человека, побывавшего в гостях у всех остальных."
                  << std::endl;    
    }
    else
    {
        std::cout << "Побывали в гостях у всех остальных:"
                  << std::endl;
        for(T_visitors::iterator  visitor_it = visitors_best.begin();
            visitor_it != visitors_best.end(); ++visitor_it)
        {
            std::cout << rus_name[*visitor_it]
                      << std::endl;
        }
    }
}
 
Текущее время: 01:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru