Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Selim
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 11
1

Реализация операций с множествами на примере домашних животных на ферме

03.06.2015, 18:09. Просмотров 1003. Ответов 1
Метки нет (Все метки)

В следующих Заданиях использовать множество подходящего типа.Для выполнения операций с множествами задействовать алгоритмы работы с множествами.
ЗАДАЧА!
На трех фермах разводят домашних животных из имеющегося списка.Определить, каких животных выращивают хотя бы на одной ферме; на всех фермах;Только на одной ферме.
Помогите пожалуйста сделайте задачу буду очень благодарен!!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2015, 18:09
Ответы с готовыми решениями:

Реализация класса "Множество" и операций над множествами
нужно реализовать класс множество и операции над множествами в виде его методов естественно, собсно...

Посчитать животных на ферме
Стоит себе ферма. На ферме сидит фермер и считает, сколько кого есть у него на ферме - a верблюдов,...

Сколько и каких животных живут на ферме, если известно общее количество ног
В Qbasic все правильно считает,а в консольных приложениях выдает ошибку и неправильные ответы ...

Из чата владельцев домашних животных
Бэмби: --- Э-гей! Люди! Какой наполнитель посоветуете для домашнего коня? ЛЮТИК: --- Народ!!!...

Приложение «Учёт домашних животных в фермерском хозяйстве» в Delphi
Нужно разработать приложение на Delphi, позволяющее собирать и накапливать сведения по учёту...

1
mymedia
194 / 194 / 120
Регистрация: 27.05.2011
Сообщений: 544
03.06.2015, 20:12 2
Лучший ответ Сообщение было отмечено Selim как решение

Решение

Ну, вот вот мой быдлокод. Кончено, main монструозная, но, надеюсь, не составит труда оперделить, какая её часть за какое задание отвечает. Задача решена в общем виде для любого количества множеств.
В первом случае просто считается объединение, во втором — пересечение. А вот в третьем случае я применил формулу
https://www.cyberforum.ru/cgi-bin/latex.cgi?E_{xlusive} \, = \ A \cup B \cup C \ \setminus \ A \cap B \ \setminus \ A \cap  C \ \setminus \ B \cap C
Кликните здесь для просмотра всего текста
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <set>
#include <sstream>
#include <string>
#include <vector>
 
int main() {
    using namespace std;
    vector< set<string> > farms;
    while (cin and not cin.eof()) {
        cout << "Введите животных очередной фермы:" << endl;
        string line;
        getline(cin, line);
        istringstream stream(line);
        farms.push_back(set<string>(istream_iterator<string>(stream),
                istream_iterator<string>()));
        if (farms.back().empty()) {
            farms.pop_back();
            break;
        }
    }
 
    set<string> all;
    for (size_t i = 0; i < farms.size(); i++) {
        copy(farms[i].begin(), farms[i].end(), inserter(all, all.end()));
    }
    cout << "Этих животных выращивают хотя бы на одной ферме:" << endl;
    copy(all.begin(), all.end(), ostream_iterator<string>(cout, " "));
    cout << endl;
 
    set<string> tmp, any = farms.size() ? farms[0] : set<string>();
    for (size_t i = 1; i < farms.size(); i++) {
        tmp.clear();
        set_intersection(any.begin(), any.end(),
                farms[i].begin(), farms[i].end(), inserter(tmp, tmp.end()));
        any = move(tmp);
    }
    cout << "Этих животных выращивают на всех фермах:" << endl;
    copy(any.begin(), any.end(), ostream_iterator<string>(cout, " "));
    cout << endl;
 
    set<string> exclusive = move(all);
    for (size_t i = 0; i < farms.size(); i++) {
        for (size_t j = i + 1; j < farms.size(); j++) {
            set<string> i_and_j;
            set_intersection(farms[i].begin(), farms[i].end(),
                    farms[j].begin(), farms[j].end(),
                    inserter(i_and_j, i_and_j.end()));
            tmp.clear();
            set_difference(exclusive.begin(), exclusive.end(),
                    i_and_j.begin(), i_and_j.end(), inserter(tmp, tmp.end()));
            exclusive = move(tmp);
        }
    }
    cout << "Этих животных выращивают только на одной ферме:" << endl;
    copy(exclusive.begin(), exclusive.end(), ostream_iterator<string>(cout, " "));
    cout << endl;
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2015, 20:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. б) ...

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. A\subseteq...

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. Дальше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.