Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Problema programma C++

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    4

    Problema programma C++

    Salve a tutti sono nuovo di questo forum, ho un problema su un progetto in C++ che sto sviluppando per un esame di informatica.

    Il progetto consiste nella gestione di album musicali con anche salvataggio e caricamento su file (io l'ho fatto in txt) da parte di una casa discografica. Ho creato una struttura dati dove all'interno sono presenti codice artista, titolo album, data uscita, prezzo vendita, canzoni contenute nell'album (che è quello che mi chiede il progetto).
    Io riesco a salvare, caricare visualizzare tutti gli album che inserisco fino al prezzo di vendita.
    Per inserire le canzoni, per ogni album, io ho usato un array multidimensionale con una dimensione fissa di 100 canzoni per ogni album, nella fase di visualizzazione (senza salvare) e salvataggio mi inserisce tutto correttamente, il problema si crea quando carico il file, se voglio visualizzare quello che ho salvato, il programma mi fa visualizzare il primo album salvato anche se nel file txt sono presenti altri file.

    Per intenderci all'interno del file txt è gestito in questo modo dove le prime 5 righe del file sono impostate fisse:
    ------------------------------------------------------
    CODICE |TITOLO ALBUM |DATA | PREZZO |
    ------------------------------------------------------
    CANZONI CONTENUTE |
    ------------------------------------------------------

    codice |titolo |02/02/2008|20.00 |

    canzone1
    canzone2
    canzone3
    ...........
    canzoneN
    0

    codice |titolo |23/03/2008|34.00 |

    canzone1
    canzone2
    ............
    canzoneN
    0

    --------------------- E cosi via per tutti gli album che inserisco -----------

    da notare che lo 0 in fondo alle canzoni serve a me per il fine inserimento delle canzoni stesse

    Ora vi posto il codice di salvataggio file:

    int Salva(){

    int i;

    ALBNODO* b;

    ofstream alb_fout;

    //APERTURA FILES
    alb_fout.open("ListaAlbum.txt");
    //VERIFICA APERTURA
    if(alb_fout.fail())
    cout<<"Errore apertura dei files!!";

    alb_fout<<"-----------------------------------------------------------"<<endl
    <<"CODICE |TITOLO ALBUM |DATA |PREZZO |"<<endl
    <<"-----------------------------------------------------------"<<endl
    <<"CANZONI CONTENUTE |"<<endl
    <<"-----------------------------------------------------------"<<endl<<endl;

    //CICLO DI LETTURA DEI FILES
    b=albhead;
    while(b!=NULL){

    //CODICE ARTISTA
    b->ListaAlbum.CodiceArtista.st[10]='\0';
    alb_fout<<b->ListaAlbum.CodiceArtista.st<<"|";
    //TITOLO ALBUM
    alb_fout<<b->ListaAlbum.TitoloAlbum.st<<"|";
    //DATA USCITA
    alb_fout<<setw(2)<<b->ListaAlbum.DataUscita.giorno.st<<"/";
    alb_fout<<setw(2)<<b->ListaAlbum.DataUscita.mese.st<<"/";
    alb_fout<<b->ListaAlbum.DataUscita.anno.st<<"|";
    //PREZZO DI VENDITA
    alb_fout<<b->ListaAlbum.PrezzoVendita.st<<"|"<<endl;
    //CANZONI CONTENUTE
    for(i=0;i<MAXCANZONI;i++){

    alb_fout<<endl<<b->ListaAlbum.Canzoni[i].st;

    if(b->ListaAlbum.Canzoni[i].st[0]=='0')
    break;

    }//end for

    alb_fout<<"\n";

    b=b->next;
    }//end while

    b=albhead;

    //CHIUSURA FILES
    alb_fout.close();

    cout<<"\n-------------------------------------------------------------------------------"
    <<"\n\t\t\tSALVATAGGIO ESEGUITO CON SUCCESSO!"
    <<"\n--------------------------------------------------------------------------------";

    return 0;
    }//end Salva()
    Ed ora il codice di apertura file:

    int CaricaFiles(){

    int i,k;
    char buffer[161];

    ALBUM nuovo_alb;

    ifstream alb_fin;

    //APERURA FILES
    alb_fin.open("ListaAlbum.txt");
    //VERIFICA APERTURA
    if(alb_fin.fail())
    cout<<"Errore apertura dei files!!";

    for(k=0;k<6;k++)
    alb_fin.getline(buffer,160);

    //CARICAMENTO DATI ALBUM
    while(alb_fin.getline(buffer,160)){

    //CODICE ARTISTA
    strncpy(nuovo_alb.CodiceArtista.st,buffer,10);
    nuovo_alb.CodiceArtista.st[10]='\0';
    //TITOLO DELL?ALBUM
    strncpy(nuovo_alb.TitoloAlbum.st,buffer+11,26);
    nuovo_alb.TitoloAlbum.st[26]='\0';
    //DATA DI USCITA
    strncpy(nuovo_alb.DataUscita.giorno.st,buffer+38,2 );
    nuovo_alb.DataUscita.giorno.st[2]='\0';
    strncpy(nuovo_alb.DataUscita.mese.st,buffer+41,2);
    nuovo_alb.DataUscita.mese.st[2]='\0';
    strncpy(nuovo_alb.DataUscita.anno.st,buffer+44,4);
    nuovo_alb.DataUscita.anno.st[4]='\0';
    //PREZZO DI VENDITA
    strncpy(nuovo_alb.PrezzoVendita.st,buffer+49,9);
    nuovo_alb.PrezzoVendita.st[9]='\0';
    //CANZONI CONTENUTE
    for(i=0;i<MAXCANZONI;i++){
    if(nuovo_alb.Canzoni[i].st[0]=='0')
    break;

    alb_fin >> nuovo_alb.Canzoni[i].st;

    }// fine for

    albhead=alb_ins_testa(nuovo_alb);
    }//end while

    cout<<"\n--------------------------------------------------------------------------------"
    <<"\t\tLista Album caricata correttamente!"
    <<"\n--------------------------------------------------------------------------------";

    //CHIUSURA FILES
    alb_fin.close();

    return 0;
    }//end CaricaFiles()
    Spero che riusciate a risolvere il mio problema, premetto che non sono una mago in c++ quindi moltissime cose sono ancora tabù.
    rimango in attesa di vostri consigli grazie a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    4
    Nessuno riesce ad aiutarmi????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.