Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struc{
  5.   int clave;
  6.   int cantidad_pedidos;
  7. } TElemAB;
  8.  
  9. void recorrer_en_rango(TAB ab, TMOV mov, int CD, int CH, TElemAB* eab){
  10.   TElemAB eab_aux;
  11.   int error;
  12.   AB_MoverCte(&ab, mov, &error);
  13.   if(!error){
  14.     AB_ElemCte(ab, &eab_aux);
  15.     if(eab_aux.clave >= CD && eab_aux < CH)
  16.       procesar(eab_aux, eab);
  17.  
  18.     if(eab_aux.clave > CD)
  19.      recorrer_en_rango(ab, IZQ, CD, CH, eab);
  20.  
  21.     if(eab_aux.clave < CH)
  22.       recorrer_en_rango(ab, DER, CD, CH, eab);
  23.   }
  24. }
  25.  
  26.  
  27. int busqueda(TAB* pAB, int clave, TMov* mov){
  28.   TElemAB eab;
  29.   int error;
  30.   if(AB_Vacio(*pAB)) return 0;
  31.   else{
  32.     if(eab.clave > clave) *mov = IZQ;
  33.     else *mov = DER;
  34.     AB_MoverCte(&pAB, mov, &error);
  35.   }
  36. }
  37.  
  38. int procesar(TElemAB e1, TElemAB* e2){
  39.   if((e2->cantidad_pedidos) == -1 ) || (e1.cantidad_pedidos < e2->cantidad_pedidos)){
  40.     e1->cantidad_pedidos = e1.cantidad_pedidos;
  41.     e2->clave = e1.clave;
  42.   }
  43. }
  44.  
  45. // FUNCION PRINCIPAL
  46. int agregar_pedido(TAB* pAB, int CD, int CH){
  47.   int error;
  48.   TElemAB eab;
  49.   TMov mov;
  50.  
  51.   recorrer_en_rango(* pAB, mov, CD, CH, &eab);
  52.   if(eab.cantidad_pedidos == -1) return 1;
  53.   else{
  54.     AB_MoverCte(pAB, mov, &error);
  55.     if(!busqueda(pAB, eab, eab.clave, &mov )) return 1;
  56.     else{
  57.       AB_ElemCte(*pAB, &eab);
  58.       eab.cantidad_pedidos++;
  59.       AB_ModifCte(pAB, &eab);
  60.     }
  61.   }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement