运用c++实现集合运算问题案例代码

题目描述

运用c++实现两个集合的运算,集合的元素采用大写字母A~Z的形式。要求实现以下功能:
(1)集合的输入:自动去掉重复和非法的字符;
(2)集合的显示:输出集合的全部元素;
(3)输出一个给定集合的补集;
(4)输出两个给定集合的交集和并集。

案例代码

下面是一个用 C++ 实现的简单案例,实现了描述的功能:

#include <iostream>
#include <set>
#include <algorithm>

using namespace std;

// 函数声明
set<char> inputSet();
void displaySet(const set<char>& s);
set<char> complement(const set<char>& s);
set<char> intersection(const set<char>& s1, const set<char>& s2);
set<char> unionSet(const set<char>& s1, const set<char>& s2);

int main() {
    // 输入集合
    cout << "Enter set A:\n";
    set<char> setA = inputSet();

    cout << "Enter set B:\n";
    set<char> setB = inputSet();

    // 显示集合
    cout << "Set A: ";
    displaySet(setA);
    cout << "Set B: ";
    displaySet(setB);

    // 输出补集
    cout << "Complement of set A: ";
    displaySet(complement(setA));
    cout << "Complement of set B: ";
    displaySet(complement(setB));

    // 输出交集和并集
    cout << "Intersection of set A and set B: ";
    displaySet(intersection(setA, setB));
    cout << "Union of set A and set B: ";
    displaySet(unionSet(setA, setB));

    return 0;
}

// 输入集合
set<char> inputSet() {
    set<char> s;
    string input;
    cout << "Enter elements (A-Z, separated by spaces): ";
    getline(cin, input);

    // 去掉重复和非法字符
    for (char c : input) {
        if (isalpha(c) && isupper(c)) {
            s.insert(c);
        }
    }

    return s;
}

// 显示集合
void displaySet(const set<char>& s) {
    cout << "{ ";
    for (char c : s) {
        cout << c << " ";
    }
    cout << "}\n";
}

// 补集
set<char> complement(const set<char>& s) {
    set<char> compSet;
    for (char c = 'A'; c <= 'Z'; ++c) {
        if (s.find(c) == s.end()) {
            compSet.insert(c);
        }
    }
    return compSet;
}

// 交集
set<char> intersection(const set<char>& s1, const set<char>& s2) {
    set<char> interSet;
    for (char c : s1) {
        if (s2.find(c) != s2.end()) {
            interSet.insert(c);
        }
    }
    return interSet;
}

// 并集
set<char> unionSet(const set<char>& s1, const set<char>& s2) {
    set<char> uniSet = s1;
    uniSet.insert(s2.begin(), s2.end());
    return uniSet;
}

这个程序首先让用户输入两个集合,然后分别实现了输入集合、显示集合、补集、交集和并集等功能。

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享