Esercizio classi in c++

di il
4 risposte

Esercizio classi in c++

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

*/

4 Risposte

  • Re: Esercizio classi in c++

    Dovresti mostrare quello che hai fatto... nel caso tu non abbia ancora fatto niente, perchè non sai come partire, magari inizia con solo costruttori/ditruttori e funzione add()...
  • Re: Esercizio classi in c++

    Ho provato a creare la classe insieme<T> ma in compilazione mi dice "no such file in directory"
  • Re: Esercizio classi in c++

    #include <iostream>
    
    using namespace std;
    class insieme<T>
    {
      insieme();
    };
    int main()
    {
        
        return 0;
    }
    Grazie per la risposta
    Allegati:
    18500_d8caee3390f7b3909e7d45e54a2c74bc.png
    18500_d8caee3390f7b3909e7d45e54a2c74bc.png

    18500_a2e12d55f4efc2d1595b087c514c529f.png
    18500_a2e12d55f4efc2d1595b087c514c529f.png
  • Re: Esercizio classi in c++

    Mi sembra che ti devi ripassare il capitolo sulle classi template
    La definizione di una classe template segue un'altra sintassi!!!
Devi accedere o registrarti per scrivere nel forum
4 risposte