Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Linguaggi di programmazione
 implementezione funzione hash
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

Nik
Utente giovane

VECHTER1

Prov.: Bari


Inserito il - 07/09/2004 : 23:50:08  Mostra Profilo  Visita l'Homepage di Nik  Clicca per vedere l'indirizzo MSN di Nik Invia a Nik un Messaggio Privato  Rispondi Quotando
qualcuno mi saprebbe dire con esattezza l'implementazione della funzione hash in c? grazie

nicux
Sottonicux

nicux


Regione: Estero
Prov.: Zara
Città: Citta'


Inserito il - 08/09/2004 : 01:58:32  Mostra Profilo  Visita l'Homepage di nicux Invia a nicux un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da Nik

qualcuno mi saprebbe dire con esattezza l'implementazione della funzione hash in c? grazie



ai fini dell'esame di linguaggi non è importante la qualità della funzione hash, è sufficiente che svolga il lavoro di restituire un numero compreso in un determinato intervallo a fronte di una stringa in argomento.
Per tenere ad esempio il valore di ritorno x nell'intervallo [0,n] devi fare una semplice
x=x%n;
mentre la conversione della stringa è abbastanza arbitraria, a me piace applicare l'algoritmo di horner opportunamente modificato:

int hash(char *chiave)
    {
       int indice=0, base=128;
       for(;*chiave!='\0';chiave++)
       indice=(base*indice+*chiave)%DIM_TABELLA;
       return indice;
    }

gia' e non ancora...
Torna all'inizio della Pagina

Nik
Utente giovane

VECHTER1

Prov.: Bari


Inserito il - 08/09/2004 : 20:26:19  Mostra Profilo  Visita l'Homepage di Nik  Clicca per vedere l'indirizzo MSN di Nik Invia a Nik un Messaggio Privato  Rispondi Quotando
Grazie, mi sa che manca qualcosa dopo il for i=0 vero?

int hash(char *chiave)
{
int indice=0, base=128;
for(i=0 ;*chiave!='\0';chiave++)
indice=(base*indice+*chiave)%DIM_TABELLA;
return indice;
Torna all'inizio della Pagina

nicux
Sottonicux

nicux


Regione: Estero
Prov.: Zara
Città: Citta'


Inserito il - 08/09/2004 : 20:41:27  Mostra Profilo  Visita l'Homepage di nicux Invia a nicux un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da Nik

Grazie, mi sa che manca qualcosa dopo il for i=0 vero?

int hash(char *chiave)
{
int indice=0, base=128;
for(i=0 ;*chiave!='\0';chiave++)
indice=(base*indice+*chiave)%DIM_TABELLA;
return indice;




non manca nulla,
non ho bisogno di contare da 0 a n perchè il ciclo si ferma quando il vettore finisce.
Prova a esercitarti sui cicli di scansioni di stringhe (o vettori di char) vedrai che ti renderai conto del perchè si usa quella forma sul for.

gia' e non ancora...
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,21 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000