Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - aiuto per un progetto classe insieme
Forum - C/C++ - aiuto per un progetto classe insieme

Avatar
seki035 (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/02/2007

Segnala al moderatore
Postato alle 14:16
Venerdì, 23/02/2007
ciao a tutti.... io devo fare un progetto per un esame dell'universita che ho tra pochi giorni solo che sono in alto mare,.,,,sapreste aiutarmi?????
contattatemi alla mia email....
intanto vi lascio il testo del progetto.....
grazie


Definire una classe, di nome Insieme, che realizza il tipo di dato astratto insieme,
parametrico rispetto ad un tipo t dei suoi elementi. Un insieme è una collezione di dati senza
duplicati, in cui l'ordine degli elementi non conta.

La classe Insieme<t> prevede (almeno) i seguenti costruttori:

• costruttore senza parametri: crea un insieme vuoto;
• costruttore con un parametro A di tipo array di elementi di tipo t: crea un insieme
contenente tutti gli elementi di A;
• costruttore con due parametri: n, di tipo stringa e A di tipo array di t: come il costruttore
con un parametro, ma in più associa il nome n all'insieme.

La classe Insieme<t> prevede inoltre (almeno) le seguenti funzioni ed operatori public:

• s.aggiungi(x): aggiunge all'insieme s un elemento x di tipo t e restituisce true se x
non è presente; altrimenti restituisce false e lascia l'insieme inalterato;
• s.rimuovi(x): rimuove dall'insieme s l'elemento x e restituisce true se x è presente;
altrimenti restituisce false e lascia l'insieme inalterato;
• s.contiene(x): restituisce true se x appartiene all'insieme s, false altrimenti;
• s.vuoto(): restituisce true se l'insieme s è vuoto, false altrimenti;
• s.nome(): restituisce il "nome" dell'insieme s;
• s.card(): restituisce il numero di elementi nell'insieme s;
• s1 = s2: restituisce true se l'insieme s1 è uguale all'insieme s2, false altrimenti;
• s1 + s2, s1 * s2, s1 - s2, con s1 e s2 insiemi di tipo t: restituiscono l'insieme
ottenuto, rispettivamente, da s1 È s2, s1 Ç s2, s1 \ s2 (differenza insiemistica),
• s1 < s2, s1 <= s2, …: restituisce true se, rispettivamente, s1 Ì s2, s1 Í s2, … , false
altrimenti;
• sin >> s, sout << s, dove sin e sout sono stream di input e di output,
rispettivamente: legge (scrive) una sequenza di elementi di tipo t, separati da "spazio" o
"a capo", da sin all'insieme s (dall'insieme s a sout).


Scrivere anche un programma principale che permette di realizzare, in modo interattivo,
operazioni insiemistiche su insiemi di numeri interi letti da file. Precisamente, il programma
propone all'utente un menù di possibili operazioni:

1. carica da file un insieme e gli assegna un nome: nome del file e nome dell'insieme
sono specificati dall'utente;
2. visualizza su standard output tutti gli elementi dell'insieme di nome n;
3. esegue una delle operazioni insiemistiche sopra elencate su uno o più insiemi esistenti
(individuati in base al nome), eventualmente creando nuovi insiemi (con nomi
specificati dall'utente);
4. elimina uno degli insiemi esistenti;
5. salva un insieme esistente su un file di nome specificato dall'utente;
6. smette.

Eseguita l'operazione scelta (tranne la 6), il programma ripropone il menù delle possibili
operazioni. L'operazione 6 invece causa la terminazione definitiva del programma. Si
supponga che al massimo possano essere presenti contemporaneamente 100 insiemi diversi.

PM Quote
Avatar
andry89mm (Member)
Pro


Messaggi: 128
Iscritto: 21/12/2006

Segnala al moderatore
Postato alle 14:50
Venerdì, 23/02/2007
E qual'è il problema allora? Vedo che hai tutti gli elementi a disposizione.
A questo punto la classe si dovrebbe costruire quasi da sola..!!;)

Comunque, anche se forse non spetta a me dirtelo, il Forum non è un posto dove chiedere la realizzaizone di interi progetti, ma serve per risolvere problemi comuni e utili a tutti i visitatori.:k:
Niente di personale, sono le regole, ci siamo passati un pò tutti:D

PM Quote
Avatar
seki035 (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/02/2007

Segnala al moderatore
Postato alle 13:14
Sabato, 24/02/2007
scusa forse mi sono spiegato male...
io una parte del progetto la ho gia fatta...
mi serve un aiuto sulla ridefinizione degli operatori perche non so farla!!!!
se mi sapete aiutare almeno su questa-....

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 14:13
Domenica, 25/02/2007
per imparare a ridefinire gli operatori potrebbe esserti utile questo:
http://www.wmlscript.it/cpp/page11.php

Cmq non hai un libro sul C++? Eventualmente ti consiglio il C++ fondamenti di programmazione della deitel&deitel e il volume successivo: C++ tecniche avanzate di programmazione deitel&deitel ;-)

Se poi il tuo problema è algoritmico dentro gli operatori dovresti dirci in queli, cioè nell'overload di << non vedo quale sia il problema, in + * e - capisco magari, bhè in quel caso nella sezione cobol hai un pò di programmi che calcolano intersezione, fusione, differenza fra array(l'algoritmo si capisce anche se non sai cobol[cosa che mi auguro, storpia la mente :-) ]),

Cmq un esempietto:

Codice sorgente - presumibilmente C/C++

  1. Insieme Insieme::operator+(const Insieme a, const Insieme b) {
  2. /*
  3.  crea un insieme con gli stelli elementi di a e b. Bhè se non vuoi fare algoritmi strani ed efficenti basta che butti dentro al nuovo insieme tutto
  4. */
  5. }
  6.  
  7.  
  8. Insieme Insieme::operator-(const Insieme a, const Insieme b) {
  9. /*
  10. Crea un insieme con gli elementi di a non presenti anche in b
  11. */
  12. }



L'overload degli operatori sono un zuccherino sintattico, ma alla fin fine sono funzioni come altre ;-)

Per quanto riguarda il discorso del progetto intero, postare tutto il testo fa pensare male, se invece scrivi di meno cercando di evidenziare il tuo problema tecnico particolare e specifico si capisce subito cosa ti serve e non passa la voglia di aiutare :k:


Ultima modifica effettuata da netarrow il 25/02/2007 alle 14:28
PM Quote