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

Вывод множества - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить какие студенты сдали предметы на 5 http://www.cyberforum.ru/cpp-beginners/thread319472.html
помогите создать массив записей (5 записей) студентов ФИО и их оценки по 3м предметам и определить какие студенты сдали на 5. Примерный алгоритм как то так объяснили struct zap.fio строки(1) i | fio | b1 | b2 | b3 | строки(2) i | fio | b1 | b2 | b3 | ..... в программирование плохо щарю а прагу на зачет надо
C++ Арифметическое выражение Помогите пожалуста решить задачу: Написать функцию Form(s,x), где s-строка, x-вещественная переменная. В строке записано арифметическое выражение, содержащее одну неизвестную x, вещественные и целые константы, операции +,-,*,/. Функция должна возвращать значение арифметического выражения при заданном x. http://www.cyberforum.ru/cpp-beginners/thread319463.html
textTocrypt C++
Не подскажите что означает в строке char textToCrypt именно цифра 1000. Как я понимаю это предел вводимых символов, которые будут шифроватся в программе, но почему то даже введя 2 вместо 1000 и попробывать ввести текст более 2-х символов, то всеравно будет все работать стабильно. только при сохранении в файл будет сохранятся столько символов, сколько задано. какая цель у этой строченьки в...
Действия над матрицами и векторами C++
Имеется условие программы: Нахождение суммы, разницы, произведения, присваивания векторов и матриц разного типа. #include "stdafx.h" #include "conio.h" #include <iostream> #include <iomanip> using namespace std; class set_vektor {
C++ Как преобразовать дробную часть числа типа double в int http://www.cyberforum.ru/cpp-beginners/thread319448.html
Есть дробное число, например Z = 123,456 нужно разбить его на два целых числа int I = 123 int F = 456 как это можно сделать ? я придумал только I= Z F= (Z - I) * 10 но так в F запишется только 4 56 потеряется
C++ Игра "Города" Очень нужна игра "в города", на сях написанная. сам в программировании не силен. с меня небольшое денежное вознаграждение. Должна представлять из себя поочередное называение городов игроком и компьютером (по известным правилам) подробнее

Показать сообщение отдельно
IIIa66uMEM6eP
заставил Бендера
435 / 291 / 10
Регистрация: 05.12.2010
Сообщений: 1,644
Записей в блоге: 6

Вывод множества - C++

15.06.2011, 09:40. Просмотров 526. Ответов 3
Метки (Все метки)

Есть программа, помогите добавить вывод в программу. Вывод какой гость, к кому сходил в гости.
Я так понимаю в эту программу нужно добавить циклический вывод - но недогоню(
Сама задача:
Дано следующее описание:
type
nаmе=(Вася, Володя, Ира, Марина, Миша, Наташа, Оля, Света, Юля);
gosti=set of name;
group=array[name] of gosti;
Написать программу, определяющую, есть в группе g:group хотя бы один человек, побывавший в гостях у всех остальных из группы (g[x]-множество людей, бывших в гостях у человека с именем х; х не входит в g[x]).

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
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <map>
#include <set>
#include <string>
using namespace std;
/////////////////////////////////////////////////////////////////////////////////////////
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() % 23) // (изменяем на что делить, получаем разных гостей)
            {
                visitors.insert(T_name(j)); // в 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())
    {//.empty возращает истину если в стеке нет элементов
     // если есть то цикл
     
        for(T_group::const_iterator  host_visitors_it = group.begin();
      // бегин возратит итератор на первый элемент множества
      // когда 
      // функция end возратит на последнее место, после последнего элемента 
            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()
{
        setlocale (LC_CTYPE, "rus");
    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);
    cout << get_persons_who_has_visited_all << endl;    
    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; 
        }
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 3 часа 39 минут
upd...

Добавлено через 2 часа 44 минуты
upd...

Добавлено через 1 час 44 минуты
upd...(((

Добавлено через 11 часов 2 минуты
ребят подскажите...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru