ESERCIZIO CHE NON CAPISCO COME SI FA

di il
10 risposte

ESERCIZIO CHE NON CAPISCO COME SI FA

Programmare in c++ sui file
chiedo gentilmente aiuto su questo esercizio perchè non riesco a risolverlo (non capisco come si fanno queste cose e devo consegnarlo il prima possibile, ho fatto solo aggiunta di un nuovo libro, visualizzazione e basta, non so come si fa ordinamento con i file e le ricerche).
ESERCIZIO:
Una bibblioteca ha identificato tutti i libri della propria collezione mediante un codice numerico. Si deve realizzare un programma che consenta di effettuare operazioni memorizzando le informazioni relative a un libro(codice,titolo,editore,anno di pubblicazione,autore) in un vettore di strutture:
-aggiunta di un nuovo libro alla collezione;
-ordinamento dell'elenco in base al codice del libro;
-visualizzazione dell'elenco dei libri della collezione;
-ricerca delle informazioni relative a un libro a partire dal codice;
-salvataggio della collezione in un file di testo;
-caricamento della collezione da un file di testo;

10 Risposte

  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Bhè nel giro di una settimana dovresti riuscire.
    magari inizia a postare quanto fatto fino ad ora
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Non hai mai affrontato l'argomento ordinamenti? E come può il professore pretendere questo esercizio?

    O tu non c'eri quando è stato spiegato?
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Metti tutti i dati, libro per libro, in un array di struct, quindi ordina l'array con qsort() usando come criterio d'ordinamento il codice numerico. Le strutture verranno riordinate nella loro interezza come conseguenza dell'ordinamento dei codici ai quali sono "collegate". DOPO salva l'array su file, convertendo in testo secondo necessità una struct alla volta.

    Credo che possa funzionare. Io farei così.
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Sicuramente lui non sa come usare il qsort anche perché dovrebbe conoscere i puntatori a funzione.

    Suggerirei di rivedere gli appunti dei colleghi su algoritmi di ordinamento studiati, magari qualcosa di semplice come un bubble sort
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Può essere che non conosca i puntatori a funzione, anche se per usare qsort() non è che si debba conoscerli in dettaglio. Dare un'occhiata alla documentazione non fa comunque male:

    qui https://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm
    o qui http://www.cplusplus.com/reference/cstdlib/qsort

    Ad esempio, ipotizzando di usare una struttura di questo tipo...
    struct Libro {
        unsigned int codice;
        int anno;
        char titolo[64];
        char autore[64];
        char editore[64];
    };
    ...si potrebbe usare una funzione di confronto come questa...
    int confronta_libri_per_codice( const void *pl1, const void *pl2 ) {
        unsigned int cod_a = ((struct Libro*)pl1)->codice; // "legge" il primo id
        unsigned int cod_b = ((struct Libro*)pl2)->codice; // "legge" il secondo id
        return cod_a==cod_b ? 0 : (cod_a<cod_b?-1:1); // confronta gli id
    }
    ...da chiamare con...
    int main() {
        struct Libro libri[10]; // un array di struct Libro, con "tot" elementi
        
        // [...]
        
        qsort( libri, 3, sizeof(*libri), confronta_libri_per_codice );
    
        // [...]
    
        return 0;
    }
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Questo è un esempio di scarsa conoscenza di uno degli argomenti più studiati, gli ordinamenti.
    qsort non è sempre il meglio, anzi nell'esempio sopra indicato, è inadatto.
    non è che avendo un martello tutti i problemi siano chiodi
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Accetto di buon grado la critica perché conosco i miei limiti. Quel che trovo poco pratico è l'affermare l'inadeguatezza di qualcosa senza provvedere a dare delucidazioni. Spiegati, se no a che serve?
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Perché, nel caso specifico, non è adatto l'uso della funzione qsort()?
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    +m2+: "qsort non è sempre il meglio, anzi nell'esempio sopra indicato, è inadatto."
    Perché qsort() non va bene in questo caso?
  • Re: ESERCIZIO CHE NON CAPISCO COME SI FA

    Cosa rende qsort() inadatto ad ordinare un array di strutture come ho fatto poco sopra?
Devi accedere o registrarti per scrivere nel forum
10 risposte