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

STL, множества - C++

Восстановить пароль Регистрация
 
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
15.10.2013, 22:02     STL, множества #1
Есть задача:

В три газетных киоска поступают газеты из имеющегося списка. Определить, какие газеты не заказали в один из киосков, какие газеты бывают в каждом киоске, какие можно купить хотя бы в одном киоске.

Мой код:

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
#include <iostream>
#include <set>
#include <string>
#include <locale>
#include <string>
#include <string.h>
#include <algorithm>
#include <conio.h>
using namespace std;
 
int main()
{
    string all_gz[]=                           
    {
        "New Your Times", "The Denver Post","Chicago Tribune", 
        "New York Post", "Newsday",  
        "Rutland Herald","The Star-Ledger","Houston Chronicle",            /*имеющийся список газет*/
        "Boston", "The Recorder", "Pittsburgh Post-Gazette"
    };
 
    set<string, less<string> > allset(all_gz, all_gz + 11);
    set<string, less<string> >::iterator iter;
    
cout<<"All gazets:\n\n";
 
iter = allset.begin(); 
while(iter != allset.end())
cout << *iter++ << '\n';
 
 
//////////////////////////////////////////
 
string gz1[]=
    {
        "New Your Times", "Chicago Tribune", 
        "New York Post", "Newsday", "Boston"   /* газеты которые заказали в 1 киоск
                                               ни в одном киоске нет  "The Star-Ledger" "The Recorder", "Rutland Herald"*/
    };
 
set<string, less<string> > set1(gz1,gz1+5);
set<string, less<string> >::iterator iter1;
    
    
iter1 = set1.begin(); 
while(iter1 != set1.end())
cout << *iter1++ << '\n';
 
 
/////////////////////////////////////////////////////////////
 
 
string gz2[]=
    {
        "New Your Times", "The Denver Post","Chicago Tribune", 
        "New York Post", "Newsday", "Houston Chronicle","Boston"     
                       /*газеты которые заказали во 2 киоск, во втором есть "Houston Chronicle" 
                       "The Denver Post" но и их нет в 1 и 3 киосках*/
          };
 
set<string, less<string> > set2(gz2, gz2 + 7);
set<string, less<string> >::iterator iter2;
    
    cout<<"<<<<<2nd kiosk: >>>>"<<endl;
iter2 = set2.begin(); 
while(iter2 != set2.end())
cout << *iter2++ << '\n';
 
 
//////////////////////////////////////////////////
 
string gz3[]=
    {
        "New Your Times","Chicago Tribune", 
        "New York Post", "Newsday", 
        "Boston", "Pittsburgh Post-Gazette"
        /*газеты которые заказали в 3 киоск, в третьем есть  
       "Pittsburgh Post-Gazette" но их нет в 1 и 2 киосках */
    };
 
set<string, less<string> > set3(gz3, gz3 + 6);
set<string, less<string> >::iterator iter3;
    
cout<<"<<<<<3d kiosk: >>>>"<<endl;
iter3 = set3.begin(); 
while(iter3 != set3.end())
cout << *iter3++ << '\n';
    getch();
    return 0;
}
Помогите пожалуйста дописать как оно будет определять где какую газету заказали и виводить
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
15.10.2013, 23:43     STL, множества #2

Не по теме:

Ужасный код с ужасным форматированием.


Если по теме, то это простые операции с множествами.
Цитата Сообщение от ChuckNorris Посмотреть сообщение
какие газеты не заказали в один из киосков
Если в один из киосков, то вычетаем из множества всех газет множество газет в этом киоске: банальный цикл с удалениями.
Цитата Сообщение от ChuckNorris Посмотреть сообщение
какие газеты бывают в каждом киоске
Банальная сумма множеств. Цикл по всем газетным киоскам (точнее, по множествам газет) и добавляем в новоиспечённую коллекцию.
Цитата Сообщение от ChuckNorris Посмотреть сообщение
какие можно купить хотя бы в одном киоске
То же самое, что и в прошлом, просто формулировка другая.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
16.10.2013, 00:11     STL, множества #3
Лезешь сюда к примеру http://www.cplusplus.com/reference/a...ic_difference/

И смотришь что тебе из алгоритмов может пригодится
C++
1
2
3
4
5
includes<>()
set_union<>()
set_difference<>()
set_symmetric_difference<>()
set_intersection<>()
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
16.10.2013, 01:03  [ТС]     STL, множества #4
Цитата Сообщение от AnyOne697 Посмотреть сообщение

Не по теме:

Ужасный код с ужасным форматированием.


Если по теме, то это простые операции с множествами.

Если в один из киосков, то вычетаем из множества всех газет множество газет в этом киоске: банальный цикл с удалениями.

Банальная сумма множеств. Цикл по всем газетным киоскам (точнее, по множествам газет) и добавляем в новоиспечённую коллекцию.

То же самое, что и в прошлом, просто формулировка другая.
напишите пожалуйста если можете реализицию кода, а то я непредставляю как ето сделать
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
16.10.2013, 01:32     STL, множества #5
Цитата Сообщение от Avazart Посмотреть сообщение
И смотришь что тебе из алгоритмов может пригодится
Мне кажется, что это какая-та практика или лабораторная или ещё чего. В общем, вряд ли прокатит такой трюк.
Цитата Сообщение от ChuckNorris Посмотреть сообщение
напишите пожалуйста если можете реализицию кода, а то я непредставляю как ето сделать
Ну что именно не понятно? Всё сделать что ли?... Нет уж. Ошибочка с разделом. Если непонятно, как писать на языке, то стоит и книгу прочитать и попрактиковаться. Не двух минут дело изучить язык. Новый. Синтетический. Компьютерный.
Или же непонятно в чём-то конкретно? Пишите конкретнее свои проблемы.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
16.10.2013, 02:57     STL, множества #6
Цитата Сообщение от ChuckNorris Посмотреть сообщение
Определить, какие газеты не заказали в один из киосков, какие газеты бывают в каждом киоске, какие можно купить хотя бы в одном киоске.
Фактически сводится к выводу списков газет, которые заказали в одном киоске, в двух и во всех.
Примерный алгоритм:
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
#include <iostream>
#include <vector>
#include <unordered_map>
 
typedef std::unordered_map<std::string, int> un_map;
typedef std::vector<std::string> v_str;
 
 
int main()
{
    const int N = 3;
    v_str delivery[N] =
    {
        {
            "New Your Times", "Chicago Tribune", "New York Post", "Newsday",
            "Boston"
        },
        {
            "New Your Times", "The Denver Post", "Chicago Tribune",
            "New York Post", "Newsday", "Houston Chronicle", "Boston"
        },
        {
            "New Your Times", "Chicago Tribune", "New York Post", "Newsday",
            "Boston", "Pittsburgh Post-Gazette"
        }
    };
 
    un_map orders;
    for (auto &d: delivery)
        for (auto &newspaper: d)
            ++orders[newspaper];
 
    for (int i=1; i <= N; i++)
    {
        std::cout << "Ordered in " << i << " kiosks:\n";
        for (auto &o: orders)
            if (o.second == i)
                std::cout << o.first << ", ";
        std::cout << std::endl << std::endl;
    }
}
Yandex
Объявления
16.10.2013, 02:57     STL, множества
Ответ Создать тему
Опции темы

Текущее время: 22:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru