Hola, tengo un problema la funcion void insertarr_directo(venedors v) deberia insertar un registro en una posicion concreta sacada de un hash, alguien podria ayudarme y decirme como podria insertar registros.<br>El programa va de la siguiente forma: insertas los datos del cliente, al insertar el dni la funcion void l_dni(char &l,int &dni), calcula su letra y la guarda en el campo dni de la estructura, despues se guarda en el fichero de la siguiente forma
<br><br>De la posicion 0 a la 9 del fichero: aqui van los dni con letra A.<br>De la posicion 10 a la 19 del fichero: aqui van los dni con letra B.<br>De la posicion 20 a la 29 del fichero: aqui van los dni con letra C.<br>
y asi hasta el final.<br><br>Pongo el codigo por si acaso....<br><br>typedef struct<br>{<br> int dni;<br> char letra_dni;<br> char nombre[50];<br> float vendas_acumuladas;<br> int activo;<br>}vendedor;<br><br>
<br><br>void insertar_directo(vendedor v)<br>{<br> int pos=0;<br> bool insertado=false;<br> int pos_arxiu=0;<br> vendedor v2;<br> FILE *f;<br> f=fopen("vendocasa.txt","r+");<br> pos=hash_letra(
v.lletra_dni);<br> pos_archivo=pos+10;<br> fseek(f,pos*sizeof(v),SEEK_SET);<br> fread(&v2,sizeof(v2),1,f);<br> while(pos!=pos_archivo && insertado==false)<br> {<br> if(v2.activo==0)<br> { pos=pos-1;
<br> fseek(f,pos*sizeof(v),0);<br> fwrite(&v,sizeof(v),1,f);<br> insertado=true;<br> }<br> fread(&v2,sizeof(v2),1,f);<br> pos=pos+1;<br> }<br> fclose(f);
<br>}<br><br><br><br>int hash_letra(char l)<br>{<br> char letras[] = "ABCDEFGHJKLMNPQRSTVWXYZ";<br> int pos=0;<br> int i;<br> for(i=0;i<23;i++)<br> {<br> if(l==letras[i])<br> {<br>
pos=i*10;<br> }<br> }<br> return(pos);<br>}<br><br><br><br>