Advertisement
Guest User

ej_1.a_del_parcial

a guest
Jul 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. int cargar_arbol_de_archivo_ordenado(t_arbol* pa, const char* path){ ///Retorna TODO_OK, ERROR_ARCHIVO o SIN_MEM
  2.     FILE *p_alu=fopen(path,"rb+");
  3.     FILE *p_archivo_preorden=fopen("archivo_pre_orden.dat","wb+");
  4.     t_info info;
  5.     if(!p_alu || !p_archivo_preorden)
  6.         return 0;
  7. ///    if(!p_alu)        ///ANTES PREGUNTABA SOLO POR ESTE
  8. ///        return 0;
  9.     int cant_reg,ini=0,fin;
  10.     fseek(p_alu,0,SEEK_END);
  11.     cant_reg=ftell(p_alu)/sizeof(t_alumno);
  12.     fin=cant_reg-1;
  13. ///    generar_arbol_con_archivo(pa,p_alu,ini,fin);      ///ANTES SOLO MANDABA ESTOS PARAMETROS
  14.     generar_arbol_con_archivo(pa,p_alu,p_archivo_preorden,ini,fin); ///CARGO EL NUEVO ARCHIVO QUE CREE
  15.     rewind(p_archivo_preorden);     ///VUELVO AL INICIO DEL ARCHIVO QUE YO CARGUE
  16.     fread(&info,sizeof(t_info),1,p_archivo_preorden);
  17.     while(!feof(p_archivo_preorden)){              ///CON ESTE WHILE CARGO TODO EL ARCHIVO EN EL ARBOL
  18.         insertar_en_arbol_bin_busq_res(pa,&info,comparar);
  19.         fread(&info,sizeof(t_info),1,p_archivo_preorden);
  20.     }
  21.     return 1;
  22. }
  23. void generar_arbol_con_archivo(t_arbol *pa,FILE *p_alu,FILE *p_archivo_preorden,int in,int fin){
  24.     int mitad;
  25.     t_info info;
  26.     t_alumno alu;
  27.     if(in>fin)
  28.         return;
  29.     mitad=(in+fin)/2;
  30.     fseek(p_alu,mitad*sizeof(t_alumno),SEEK_SET);
  31.     fread(&alu,sizeof(t_alumno),1,p_alu);
  32.     info=alu;
  33. ///    insertar_en_arbol_bin_busq_res(pa,&info,comparar);            ANTES CARGABA EN EL ARBOL..
  34.     fwrite(&info,sizeof(t_info),1,p_archivo_preorden);              ///AHORA CARGO EN EL ARCHIVO..
  35.     generar_arbol_con_archivo(pa,p_alu,p_archivo_preorden,in,mitad-1);
  36.     generar_arbol_con_archivo(pa,p_alu,p_archivo_preorden,mitad+1,fin);
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement