Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    23

    [c] creare libreria di insiemi arbitrari

    Ciao a tutti, devo realizzare una libreria per la gestione di insiemi di dati di tipo arbitrario, destinata all'uso da parte di altre applicazioni.La libreria deve fornire funzioni per creare nuovi insiemi, aggiungere un elemento a un insieme,
    aggiungere tutti gli elementi di un insieme a un altro insieme, ecc.

    Per implementare l insieme posso utilizzare una struttura di dati generici in c?? esempi di come andrebbero implementate?? come faccio poi a fare confronti tra insiemi per vedere se entrambi contengono lo stesso elemento?
    ci sono librerie già implementate che mi possono aiutare a capire come fare??
    scusate la pioggia di domande ma ammetto che sono un po confuso..

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    le cose migliori le trovi nelle collection della stl.. prendi spunto da quelle

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    10
    Ho dato un'occhiata su internet per la libreria stl, ma ho visto che riguarda il c++ ma non il c..E' corretto?Anche io ho lo stesso problema..libreria per insiemi di tipo arbitrario per un progetto in c..e anche io non ho idea di come fare..

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Non è facilissimo in C, dato che non hai i template, le classi e la possibilità di ereditare classi (che sono UTILISSIME in questi casi).

    Ad ogni modo, al posto dei template, o usi i puntatori a void* oppure devi fare riferimenti in base al sizeof della struttura (così simuli le strutture derivate), un pò come fa Windows.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    il riferimento alle stl era per il modo di gestire delle collezioni.. ovviamente in c non ci sono ne classi ne template.. im base alle tue conoscenze e alle richieste puoi prendere più o meno spunto..

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    10
    Ok..grazie mille!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    23
    scusate ma io ancora non capisco bene devo utilizzare i puntatori void per creare l' insieme, ma come faccio??? e a fare poi un confronto tra gli elementi dell insieme ovvero controllare se 2 insiemi contengono lo stesso elemento.... :master: :master: e tra le librerie cosa mi conviene guardare?? scusate l insistenza ma sono parecchio confuso...

  8. #8
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Il progetto è difficile, questo è da fissarlo in testa.

    Eccoti un esempio per le strutture derivate.

    codice:
    struct V1
    {
          int cSize;
          int campo1;
    };
    
    
    struct V2
    {
          int cSize;
          int campo1;
          int campo2;
    };

    Le 2 strutture evidentemente differiscono per la loro grandezza.
    Dunque puoi usarle entrambe in un'unica funzione che prende un puntatore alla struttura base e fare poi considerazioni sulla grandezza. Esempio pratico

    codice:
    V2 v;
    v.campo1 = 2;
    v.campo2 = 3;
    v.cSize = sizeof(V2);
    
    Funzione((V1*)&V2);
    
    
    void Funzione(V1 *p)
    {
            if (p->cSize == sizeof(V1))
            {//codice per V1}
    
            if (p->cSize == sizeof(V2))
            {V2 *pp = (V2*)&p; //altro codice}
             
    }
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.