#include #include #include #define clrscr() system("cls") #define pause() system("pause") //costante di grandezza della tabella #define DIM_TABLE 5 //costante di grandezza del nome #define DIM_NOME 20 //struttura dati di un esame struct esame { int matricola; char nome[DIM_NOME]; int voto; }; //tabella hash struct esame table[DIM_TABLE]; int hash(char nome[]); //genera il corrispondente valore hash void hash_flush_table(void); //azzera la tabella int hash_add_element(struct esame element); //aggiunge un elemento alla tabella int hash_search_element(struct esame element);//ricerca un elemento alla tabella int hash(char nome[]) { //ptr = puntatore all'esame //return = valore hash int i,res; res = 0; //risultato for(i=0;nome[i]!='\0';i++){ res += ((int) nome[i])*(32^i); //printf("%c = %i * 32^%d \n",nome[i],(int) nome[i],i); } return res; } void hash_flush_table(void){ int i; for(i=0;i0;i--) { printf("NOME"); scanf("%s",&element.nome); printf("MATRICOLA"); scanf("%i",&element.matricola); printf("VOTO"); scanf("%i",&element.voto); k =(hash_add_element(element)); if(k == -1) { printf("NON INSERITO\n"); } else { printf("INSERITO IN %i\n",k); } } hash_show_table(); printf("inserisci l'elemento da cercare:"); printf("NOME"); scanf("%s",&element.nome); printf("MATRICOLA"); scanf("%i",&element.matricola); k = hash_search_element(element); if(k == -1) { printf("NON TROVATO\n"); } else { printf("TROVATO IN %i\n",k); } pause(); }