Ciao a tutti di nuovo, avevo già aperto una discussione del genere ma senza codice. Mi è stata chiusa così ne inizio una nuova.
Il mio progetto consiste nel gestire file musicali. Ho pensato così di creare una lista con strutture e puntatori... purtroppo nel web non trovo molto... perciò avrei bisogno di voi...
Vi posto il codice che funge fino ad Aggiungi (aggiunge un elemento) ma quando chiedo di visualizzare la lista si blocca.
Avviso che per il momento per il titolo e l'artista ho usato le stringhe ma che lo perfezionerò con char e [] appena tutte le funzioni sono ok; ma nel complesso il codice tutto è ancora da perfezionare...per ora mi interessa che almeno ci sia un buon scheletro.
Questo è il codice
codice:#include <iostream> #include <string> using namespace std; struct brano { string titolo; string artista; string genere; struct brano *next; }; brano* testa; int attuali = 0; //Prototipi di funzioni void Titolo(); void Menu(); void Aggiungi (brano* & ); void Visualizza (brano*); void Ordina(); void Trova (); void Elimina (); //funzione principale int main() { int risp; brano* testa = NULL; Titolo (); do { Menu (); cout <<"\n\nDigita la tua scelta: "; cin >> risp; } while (risp <1 || risp > 6); switch (risp) { case 1: Aggiungi(testa); break; case 2: Visualizza(testa); break; case 3: Ordina; break; case 4: Trova; break; case 5: Elimina; break; case 6: cout <<"\nArrivederci! :) \n\n"; break; } return 0; } // funzioni in dettaglio void Titolo () { cout <<"\n\t LettoreMusicale.cpp \n"; cout <<"\n\t Esame di: ALGORITMI E PROGRAMMAZIONE \n"; cout <<"\n\t == GESTIONE DI FILE MUSICALI == \n"; cout <<"\n\t Contatti attualmente presenti: " << attuali << endl; } // fine Titolo void Menu() { cout <<"\n\n\t == Menu'== \n"; cout <<"\n\t [1]: Aggiungi un nuovo brano \n"; cout <<"\n\t [2]: Visualizza i brani inseriti \n"; cout <<"\n\t [1]: Ordina brani \n"; cout <<"\n\t [4]: Trova un brano \n"; cout <<"\n\t [5]: Elimina brano \n"; cout <<"\n\t [6]: Esci\n"; } // fine Menu void Aggiungi (brano* &testa) { int risposta; string TitoloBrano; string ArtistaBrano; string GenereBrano; brano* nuovo; nuovo = new brano; cout <<"\n\n == Nuovo elemento == \n"; cout <<"\nTitolo brano: \t"; cin >> TitoloBrano; cout <<"\nArtista: \t"; cin >> ArtistaBrano; cout <<"\nGenere: \t"; cin >> GenereBrano; nuovo->titolo = TitoloBrano; nuovo->artista = ArtistaBrano; nuovo->genere = GenereBrano; nuovo->next = testa; testa = nuovo; attuali ++; cout <<"\n == Brano Inserito! == \n"; cout <<"\nVuoi effettuare una nuova operazione? Si= 1; No = 0 \n\n"; cin >> risposta; if (risposta == 1) main(); } // fine Aggiungi void Visualizza (brano* testa) { brano* prossimo; prossimo = testa; cout <<"\n\n == ELENCO BRANI == \n\n"; do { cout <<"\n\n\tTitolo: " << prossimo->titolo << " \n"; cout <<"\n\n\tArtista: " << prossimo->artista << " \n"; cout <<"\n\n\tGenere: " << prossimo->genere << " \n"; prossimo = prossimo->next; } while (prossimo != NULL); } // fine Visualizza