Форум программистов, компьютерный форум 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> подробнее

Показать сообщение отдельно
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
13.04.2011, 00:04  [ТС]     Множества.
Цитата Сообщение от Mr.X Посмотреть сообщение
enum - это ключевое слово C++. Объявляет тип-перечисление.
спасибо не знал,
что делает функция get_person_who_has_visited_all
что значит ->

Добавлено через 4 минуты
вообще странно работает))
у нас рендомное заполнение, от чего человеком х может становится 9 человек + никто..
Но такое бывает?)

Добавлено через 2 часа 18 минут
Ребят. Подскажите почему у меня после замены, остальные значения при выборе (y/n) в пользу n затирает остальной результат.
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
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <clocale>
using namespace std;
 
 
int main(int argc, char *argv[])
{
    setlocale (LC_CTYPE, "rus");
    int i, dlinna_stroki; 
    char a[256], a1, a2, p;
    cout << "Введите текст " << endl;
    cin >> a;
    cout << "Заменяемый символ " << endl;
    cin >> a1;
    cout << "Заменяющий символ " << endl;
    cin >> a2;
    
    dlinna_stroki = strlen(a);
    for (i = 0; i <= dlinna_stroki; i++) 
    {if (a[i] = a1) 
    a[i] = '_';
    cout << a << endl;
    cout << "Вы подтверждаете замену " << i <<"-ого символа?(y/n)" << endl;
    cin >> p;
    if ( p == 'y') a[i] = a2; 
    else    a[i] == a1;
    }   
cout << "Преобразовано " << a << endl;
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 1 час 56 минут
Mr.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
126
127
128
129
130
131
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <clocale>
/////////////////////////////////////////////////////////////////////////////////////////
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_gosti; // гостей
typedef std::map<T_name, T_gosti>  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_gosti  gosti;                       // разбрассываем группы
        for(int  j = 0; j < names_total; ++j)
        {   
            if(j == i) continue;              
            if(rand() % 4)
            {
                gosti.insert(T_name(j)); // в j добавляем новую запись
            }
        }
        group[T_name(i)] = gosti; 
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  get_person_who_has_visited_all // выводит ответ.
    (
        const T_group&  group,  
        T_name&         name
    )
{
    T_name_visits_total  name_visits_total; // обьявляем общие имена гостей
    if(group.empty())  return  false; 
    //Функция empty() возвращает истину, если в стеке нет элементов
    // если есть то цикл
    for(T_group::const_iterator  host_gosti_it = group.begin();
    // Функция begin() возвращает итератор на первый элемент множества
    // когда 
    // Функция end() возвращает итератор на место после последнего элемента 
        host_gosti_it != group.end(); ++host_gosti_it)
    {      // где найм ит это счетчик людей удовлетворяюзих условию
    // host_gosti_it разименование second.begin()  
        for(T_gosti::const_iterator  name_it = host_gosti_it->second.begin();
           // когда нейм ит не равно разименованию .second -для обращения к данным
           // далее постфикс инкремента 
            name_it != host_gosti_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)
    {
        // если у нас обращение к данным разименованного name_visits_total_it
        // равно предыдущему члену names_total
        if(name_visits_total_it->second == names_total - 1)
        {   // присваем имени разыменованный участок  name_visits_total_it и
        // возращаем в функцию тру
            name = name_visits_total_it->first;
            return  true;
            // ура - функция работает!!!!!!!!!!!!!!!!!!!!!!!!
        }
    } 
    return  false;
}
/////////////////////////////////////////////////////////////////////////////////////////
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_name  name;
    if( get_person_who_has_visited_all(group, name) )
    // ищем человека кто погостил у всех если есть, то ищем его эквивалент русский 
    // и выводим кто счастливчик)))
    {
        std::cout << rus_name[name]
                  << " побывал(а) в гостях у всех остальных."
                  << std::endl;
    }
    else 
    {
        std::cout << "В группе не существует человека, побывавшего в гостях у всех остальных."
                  << std::endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Текущее время: 01:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru