Форум программистов, компьютерный форум 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++ Игра "Города" Очень нужна игра "в города", на сях написанная. сам в программировании не силен. с меня небольшое денежное вознаграждение. Должна представлять из себя поочередное называение городов игроком и компьютером (по известным правилам) подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
28.06.2011, 21:53     Вывод множества
Я там подправил кое-что. Проверяй; знаешь, как проверять?

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
#include <windows.h>
#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()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 
        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::iterator  visitor_it; 
   
    //Вот вывод, который тебе нуден 
    for(T_group::iterator  group_it = group.begin();group_it != group.end(); ++group_it) {  
     std::cout <<"В гостях у " << rus_name[group_it->first] << " были "<< std::endl; 
        for(visitor_it= group_it->second.begin();
         visitor_it!= group_it->second.end(); ++visitor_it) {
          std::cout << rus_name[*visitor_it] << std::endl; 
         }
    }
 
    printf ("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
 
    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(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;
}
 
Текущее время: 12:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru