Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di asiul
    Registrato dal
    Jan 2003
    Messaggi
    400

    [C++]Tabella hash con liste

    Devo fare un programma che faccia una tabella hash utilizzando le liste. Devo avere un vettore dinamico dai cui elementi partono le liste. Ovviamente una lista per elemento.
    Poi dovrò inserire, cercare, stampare ecc. Durante l'esecuzione devo calcolare il tempo che impiega ad inserire tot elementi variando di volta in volta la dimensione della tabella ed il numero di dati che inserisco, per questo voglio vettori dinamici!
    Ma io mi blocco sul vettore dinamico perché non l'avevo mai visto e non so come usarlo.
    Secondo voi questo codice ha un senso?
    (Mi sento una capra )

    codice:
    #include<time.h>
    #include <iostream>
    
    using namespace std;
    
    class Dizionario {   
          public:
                       bool insert (int dato);
                       bool search(int dato);
                       Dizionario(); //???
          }
    
    struct Node {
                         int key;
                         Node *next;
                         Node(int key) {next=NULL; key=key;}
                         };
                  
                        
    class Lista {  
          public:
                  Node *testa;
                  Node *PosizCorrente;
                  Lista() {testa=NULL;PosizCorrente=NULL;};
                  bool search(int dato);
                  bool insert(int dato);                 
    };
     
    class DizionarioLista:public Dizionario { 
          int n;
          int *vett;
          vett=new Lista *Lista[n]; // E' un vettore di puntatori a Lista?
          
    }
    Ho scritto anche altro e poi ho compilato per vedere che errori mi dava e in corrispondenza di "vett=new Lista *Lista[n]" mi dice:
    'new' cannot appear in constant-expression e
    ISO C++ forbids declaration of 'vett' with no type e
    ISO C++ forbids inizialization of member 'vett' making 'vett' static
    e altri 2 errori simili...insomma su una riga 5 errori!!
    Uso dev c++!

    PS: Devo seguire le indicazioni del prof, quindi la distribuzione delle classi ecc dev'essere questa!

  2. #2

    Re: [C++]Tabella hash con liste

    Originariamente inviato da asiul
    [...]
    class DizionarioListaublic Dizionario {
    int n;
    int *vett;
    vett=new Lista *Lista[n]; // E' un vettore di puntatori a Lista?

    }
    Non mi dilungo in spiegazioni tecniche perche` il tuo professore sapra' darteli meglio di me.
    Comunque, a prima vista: hai dichiarato un puntatore intero e per forza di cose e` errato. Al limite dovevi scrivere, per un vettore di puntatori di tipo Lista:
    Lista* vlist[];
    "usa la crittografia!"

  3. #3
    Utente di HTML.it L'avatar di asiul
    Registrato dal
    Jan 2003
    Messaggi
    400

    Re: Re: [C++]Tabella hash con liste

    Originariamente inviato da fgr
    Non mi dilungo in spiegazioni tecniche perche` il tuo professore sapra' darteli meglio di me.
    Comunque, a prima vista: hai dichiarato un puntatore intero e per forza di cose e` errato. Al limite dovevi scrivere, per un vettore di puntatori di tipo Lista:
    Lista* vlist[];
    Ovviamente non ho capito!

  4. #4

    Re: Re: Re: [C++]Tabella hash con liste

    Originariamente inviato da asiul
    Ovviamente non ho capito!
    cosa, la dichiarazione di puntatori a lista?
    "usa la crittografia!"

  5. #5
    Utente di HTML.it L'avatar di asiul
    Registrato dal
    Jan 2003
    Messaggi
    400

    Re: Re: Re: Re: [C++]Tabella hash con liste

    Originariamente inviato da fgr
    cosa, la dichiarazione di puntatori a lista?
    Sì, non ho capito l'unica cosa che avevi scritto!
    Cioè io devo fare un vettore dinamico di puntatori che puntano ognuno alla testa di una lista...questo è quello che devo fare, ma non ho capito cosa ho sbagliato

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    non puoi inzializzare un campo dati nella dichiarazione di una classe !!!
    lo devi dentro al costruttore oppure fuori dalla classe se è un campo dati di tipo statico..
    I got the remedy

  7. #7
    Utente di HTML.it L'avatar di asiul
    Registrato dal
    Jan 2003
    Messaggi
    400
    Originariamente inviato da albgen
    non puoi inzializzare un campo dati nella dichiarazione di una classe !!!
    lo devi dentro al costruttore oppure fuori dalla classe se è un campo dati di tipo statico..
    Figurati, non mi sembrava nemmeno di averlo inizializzato , ma ho capito quello che dici!

  8. #8
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    puoi fare una cosa cosi':

    codice:
    class DizionarioLista:public Dizionario {
     private:
       int n;
       int* vett;
     public:
       Dizionario(int n=0);
    };
    
    Dizionario::Dizionario(int n){ 
    
      //questo è un costruttore con un parametro
      vett = new Lista[n];
    
    }
    per es;
    nel main quando vuoi un dizionario con 5 elementi scrivi:
    Dizionario d(5);
    oppure se scrivi;
    Dizionario d2;//si intende con zero elementi

    cmq, devi leggere un po di tutorial per la programmazione a oggetti in c++, altrimenti farai fatica...
    I got the remedy

  9. #9
    Utente di HTML.it L'avatar di asiul
    Registrato dal
    Jan 2003
    Messaggi
    400
    Grazie!
    Veramente dopo corsi di C/C++/Java dovrei già sapere!
    Il problema è che avevo visto liste, avevo visto vettori, avevo visto classi ma non avevo visto classi con vettori dinamici di liste !
    Di solito Internet è una grande risorsa ma questa volta ho trovato poco! Certo, classi semplici, liste e vettori so usarli abbastanza!
    Il prof mi da una mano ma questo programma dovrebbe essere parte dell'esame, quindi non può farmelo lui!!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.