Salve a tutti mi è stato assegnato un esercizio sulle classi in c++ è da qualche giorno che provo a risolverlo ma niente da fare sono proprio in alto mare. Non voglio che me lo risolviate, solo se riuscireste a darmi qualche consiglio per partire. Il main mi è stato fornito dal professore.
Vi ringrazio.
Ecco il testo dell'esercizio:
"Definire una classe di nome insieme<T> che realizza il tipo di dato astratto tipo di dato astratto insieme di elementi di tipo T. La classe offre le seguenti funzioni proprie public:
- funzione void add(x): aggiunge a questo insieme un elemento x di tipo T; se x è già
presente, l'insieme rimane inalterato;
- funzione booleana contains(x): verifica se x appartiene o no a questo insieme;
- funzione intera size(): restituisce la cardinalità dell'insieme;
- funzione void add_all(S), di tipo void: aggiunge a questo insieme tutti gli elementi
contenuti nell’insieme S.
La classe fornisce anche un costruttore senza parametri che crea un insieme vuoto. E' inoltre prevista una funzione che ridefinisce l'operatore << : f_out << S stampa tutti gli elementi dell'insiemeSsullostreamf_out, N.B.nonèrichiestodirealizzaredistruttoreecostruttore di copia.
Specifiche di implementazione. Memorizzare gli elementi dell'insieme in un albero binario ordinato, contenuto nella classe insieme<T>, realizzato (obbligatoriamente) tramite una classe template balbero<T>. La classe balbero<T> fornisce (obbligatoriamente) una funzione propria void to_vector(V), con V di tipo vector<T>, che aggiunge al vettore V tutti gli elementi dell’albero su cui invocata. Utilizzare la funzione to_vector per la realizzazione della funzione add_all della classe insieme.
Main di prova. Vedi codice nel file insieme_T.cpp"
Questo è il main di prova, (file insieme_T.cpp)
#include <iostream>
#include <vector>
#include "insieme_T.cpp" // classi balbero<T> e insieme<T>
using namespace std;
int main() {
insieme<int> A1;
cout << "L'insieme ha " << A1.size() << " elementi" << endl;
int x;
cout << "Dai una sequenza di numeri (<0 per terminare)): " << endl;
cin >> x;
while (x>=0) {
A1.add(x);
cin >> x;
}
cout << A1 << endl;
insieme<int> A2;
cout << "Dai una sequenza di numeri (<0 per terminare)): " << endl;
cin >> x;
while (x>=0) {
A2.add(x);
cin >> x;
}
cout << A2 << endl;
A1.add_all(A2);
cout << '\n' << A1 << endl;
cout << "L'insieme ha " << A1.size() << " elementi" << endl;
cout << "Dai un nodo da cercare: ";
cin >> x;
if (A1.contains(x)) cout << x << " e' presente" << endl;
else cout << x << " non e' presente" << endl;
system("pause");
return 0;
}
/*
L'insieme ha 0 elementi
Dai una sequenza di numeri (<0 per terminare)):
4 6 2 8 -1
4 2 6 8
Dai una sequenza di numeri (<0 per terminare)):
3 9 12 6 15 -1
3 9 6 12 15
4 2 3 6 8 9 12 15
L'insieme ha 8 elementi
Dai un nodo da cercare: 8
8 e' presente
Premere un tasto per continuare . . .
*/