Informatică, întrebare adresată de Cristi1301, 8 ani în urmă

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

Răspuns de andrei750238
2

►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.

Alte întrebări interesante