Salut! ma poate ajuta cineva cu problema asta? trebuie implementata in c++
Sa se implementeze clasa Multime ale carei elemente sunt numere intregi.
Numarul de elemente si elementele se citesc de la tastatura.
Supraincarcati operatorii: +(reuniune), -(diferenta), *(intersectie).
Răspunsuri la întrebare
►Program C++
#include <iostream>
#include <set>
class Multime {
public:
std::set<int> e;
void citire_elemente() {
int nr, temp;
std::cout << "Introduceti numar elemente : ";
std::cin >> nr;
std::cout << "Introduceti elementele : ";
for (auto index = 0; index < nr; index++) {
std::cin >> temp;
e.insert(temp);
}
}
const void afisare_elemente() {
std::cout << std::endl;
for (auto it = e.begin(); it != e.end(); ++it)
std::cout << *it << " ";
}
};
Multime operator+(const Multime& a, const Multime& b) {
Multime tmp;
for (auto it = a.e.begin(); it != a.e.end(); ++it)
tmp.e.insert(*it);
for (auto it = b.e.begin(); it != b.e.end(); ++it)
tmp.e.insert(*it);
return tmp;
}
Multime operator-(const Multime& a, const Multime& b) {
Multime tmp;
for (auto it = a.e.begin(); it != a.e.end(); ++it)
if (b.e.find(*it) == b.e.end())
tmp.e.insert(*it);
return tmp;
}
Multime operator*(const Multime& a, const Multime& b) {
Multime tmp;
for (auto it = a.e.begin(); it != a.e.end(); ++it)
if (b.e.find(*it) != b.e.end())
tmp.e.insert(*it);
return tmp;
}
int main() {
Multime a, b, c, d, e;
a.citire_elemente();
b.citire_elemente();
c = a + b;
d = a - b;
e = a * b;
c.afisare_elemente();
d.afisare_elemente();
e.afisare_elemente();
}
► Explicatie :
Al folosit container set din standard template library. Acest container retine elementele in ordine, are o performanta buna la cautare si nu admite dubluri, fiind astfel un container ideal pentru problema data.
► Test
Vezi imaginea atasata.