Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema con liste C

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    45

    Problema con liste C

    Salve ragazzi ho un progetto all'universita' da fare.
    Realizzare la gestione di una piccola biblioteca.

    Una parte del progetto è questa :

    Le informazioni relative ad un testo sono :
    Titolo, autore, data di pubblicazione, numero complessivo di copie
    disponibili (>0). Ogni testo è identificato dal titolo. Ogni copia e'
    identificata dalla sua collocazione (Num di scaffale e posizione nello
    scaffale). Interessa memorizzare per ciascuna copia l'informazione se la
    copia è in prestito o meno.

    per cui ho creato una lista che contiene le info : titolo,autore,data di pubblicazione con chiave titolo.

    mi chiedo: devo creare un altra lista con le info copia e collocazione ?
    Come faccio a collegare le due liste?

    Sono ancora all'inizio e inesperto!
    Non voglio la pappa bella e pronta,ma magari info su cosa cercare e quali argomenti trattare.

    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    torn24

    Non so se sia , una soluzione valida , ma te la propongo .
    Num di scaffale e posizione nello scaffale , sono due informazioni , ora ti serve avere queste informazioni per ogni copia , si potrebbe utilizzare un array di strutture come campo della lista , allocato dinamicamente in base al numero copie .

    ESEMPIO.

    codice:
    typedef struct
    {
        short int num_scafale;
        short int posizione;
    }copia;    
    struct nodo
    {
        char titolo[40];
        char autore[40];
        char data_pubblicazione[10];
        short int numero_copie;
        copia *c;
        struct nodo *next;  
        
        
    };    
    
    typedef struct nodo Lista;
    
    
    
    Lista* inizializza(Lista *x)
    {
        
        int i;
        fflush(stdin);
        printf("inserisci il titolo:");
        gets(x->titolo);
        puts(x->titolo);
        printf("\n");
        printf("inserisci autore:");
        gets(x->autore);
        printf("\n");
        printf("inserisci data di pubblicazione: ");
        gets(x->data_pubblicazione);
        printf("\n");
        printf("inserisci numero copie :");
        scanf("%d",&x->numero_copie);
        i=x->numero_copie;
        x->c=(copia*)malloc(sizeof(copia)*i);//creo un array di n elementi = a copie 
        for(i=0;i<x->numero_copie;i++)//inizializzo l'array
        {
             printf("inserisci scafale copia %d :",i+1);
             scanf("%d", &x->c[i].num_scafale);
             printf("\n");
             printf("inserisci posizione copia %d :",i+1);
             scanf("%d",&x->c[i].posizione);
        }
        
        
        
        return x;
        
        
        
        
        }
    Tecnologia

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    45
    grazie per la risposta...!

    provo ad approfondire il codice e ti faccio sapere se va bene!
    cmq era proprio quello il punto...associare num scaffale pos scaffale alle copie !

  4. #4
    Due possibilità semplici:
    1. tieni due liste: una con i dati dei libri (titolo, autore, ...), una con i dati delle copie (numero scaffale, posizione scaffale); nella struct delle copie, però, inserisci anche un puntatore alla struttura contenente i dati del libro corrispondente; questo metodo privilegia la possibilità di risalire in maniera rapida da copia a libro;
    2. tieni una lista con i dati dei libri, e ogni struct-libro contiene un puntatore alla lista delle sue copie; ovvero, hai una macro-lista di libri e tante "listine" di copie; questa rappresentazione, al contrario, privilegia la possibilità di trovare facilmente le copie dato un libro.
    Ma l'approccio migliore (che consente di passare da libro a lista di copie e viceversa in maniera rapida) può essere un approccio combinato: fai come al punto 2, ma mantenendo nelle struct delle copie un puntatore al libro corrispondente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Ciao

    MItaly , non essendo molto ferrato con le liste , nelle tue soluzioni , visto che non si sa quanti libri ci siano , e quindi quante liste copie sono necessarie , si risolverebbe con una array di liste copie allocato dinamicamente ???
    Tecnologia

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    45
    ancora non ho potuto provare...
    cmq una cosa che non ho specificato è che l'assegnamento della posizione(num scaffale e pos scaffale)avveng in modo automatico..

    inserisco un libro e il programma mi da la prima posizione utile disponibile.

    Questo pome provo un po'...


    cmq grazie a tutti...

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.