Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.49 KB | None | 0 0
  1.  
  2. int verifMayorQUICK(datos1 linea1[TAM],datos2 linea2[TAM], datos3 linea3[TAM],int pos,datos1 pivote,datos2 pivote2,datos3 pivote3,int filtro1, int filtro2, int opcion){
  3.  
  4. int valor;
  5. switch(opcion){
  6. case 1:{
  7. if (filtro1==1)
  8. valor=strcmp(linea1[pos].ruc,pivote.ruc);
  9. if (filtro1==2)
  10. valor=strcmp(linea1[pos].dni,pivote.dni);
  11. if (filtro1==3)
  12. valor=strcmp(linea1[pos].nombre,pivote.nombre);
  13. if (filtro1==4)
  14. valor=strcmp(linea1[pos].ap,pivote.ap);
  15. if (filtro1==5)
  16. valor=strcmp(linea1[pos].am,pivote.am);
  17. if (filtro1==6)
  18. valor=strcmp(linea1[pos].anio,pivote.anio);
  19. if (filtro1==7)
  20. valor=strcmp(linea1[pos].estado,pivote.estado);
  21. if (filtro1==8)
  22. valor=strcmp(linea1[pos].monto,pivote.monto);
  23.  
  24.  
  25. if (valor<0)return 1;//a
  26.  
  27. else if (valor>0) return 0;
  28. else { //cuando a este else es porque el valor es cero debido a que ambas cadenas son iguales
  29. if (filtro2==1)
  30. valor=strcmp(linea1[pos].ruc,pivote.ruc);
  31. if (filtro2==2)
  32. valor=strcmp(linea1[pos].dni,pivote.dni);
  33. if (filtro2==3)
  34. valor=strcmp(linea1[pos].nombre,pivote.nombre);
  35. if (filtro2==4)
  36. valor=strcmp(linea1[pos].ap,pivote.ap);
  37. if (filtro2==5)
  38. valor=strcmp(linea1[pos].am,pivote.am);
  39. if (filtro2==6)
  40. valor=strcmp(linea1[pos].anio,pivote.anio);
  41. if (filtro2==7)
  42. valor=strcmp(linea1[pos].estado,pivote.estado);
  43. if (filtro2==8)
  44. valor=strcmp(linea1[pos].monto,pivote.monto);
  45.  
  46. if (valor<=0);//aca si ya no me jodan
  47. else return 0;
  48. }
  49. break;}
  50.  
  51. case 2:{
  52. if (filtro1==1)
  53. valor=strcmp(linea2[pos].dni,pivote2.dni);
  54. if (filtro1==2)
  55. valor=strcmp(linea2[pos].nombre,pivote2.nombre);
  56. if (filtro1==3)
  57. valor=strcmp(linea2[pos].ap,pivote2.ap);
  58. if (filtro1==4)
  59. valor=strcmp(linea2[pos].am,pivote2.am);
  60. if (filtro1==5)
  61. valor=strcmp(linea2[pos].genero,pivote2.genero);
  62. if (filtro1==6)
  63. valor=strcmp(linea2[pos].cargafam,pivote2.cargafam);
  64.  
  65.  
  66. if (valor<0)return 1;//a
  67.  
  68. else if (valor>0) return 0;
  69. else { //cuando a este else es porque el valor es cero debido a que ambas cadenas son iguales
  70. if (filtro2==1)
  71. valor=strcmp(linea2[pos].dni,pivote2.dni);
  72. if (filtro2==2)
  73. valor=strcmp(linea2[pos].nombre,pivote2.nombre);
  74. if (filtro2==3)
  75. valor=strcmp(linea2[pos].ap,pivote2.ap);
  76. if (filtro2==4)
  77. valor=strcmp(linea2[pos].am,pivote2.am);
  78. if (filtro2==5)
  79. valor=strcmp(linea2[pos].genero,pivote2.genero);
  80. if (filtro2==6)
  81. valor=strcmp(linea2[pos].cargafam,pivote2.cargafam);
  82.  
  83. if (valor<=0);//aca si ya no me jodan
  84. else return 0;}
  85. break;}
  86.  
  87. case 3:{
  88. if (filtro1==1)
  89. valor=strcmp(linea3[pos].dni,pivote3.dni);
  90. if (filtro1==2)
  91. valor=strcmp(linea3[pos].nombre,pivote3.nombre);
  92. if (filtro1==3)
  93. valor=strcmp(linea3[pos].ap,pivote3.ap);
  94. if (filtro1==4)
  95. valor=strcmp(linea3[pos].am,pivote3.am);
  96. if (filtro1==5)
  97. valor=strcmp(linea3[pos].riesgo,pivote3.riesgo);
  98.  
  99. if (valor<0)return 1;//a
  100.  
  101. else if (valor>0) return 0;
  102. else { //cuando a este else es porque el valor es cero debido a que ambas cadenas son iguales
  103. if (filtro2==1)
  104. valor=strcmp(linea3[pos].dni,pivote3.dni);
  105. if (filtro2==2)
  106. valor=strcmp(linea3[pos].nombre,pivote3.nombre);
  107. if (filtro2==3)
  108. valor=strcmp(linea3[pos].ap,pivote3.ap);
  109. if (filtro2==4)
  110. valor=strcmp(linea3[pos].am,pivote3.am);
  111. if (filtro2==5)
  112. valor=strcmp(linea3[pos].riesgo,pivote3.riesgo);
  113.  
  114. if (valor<=0);//aca si ya no me jodan
  115. else return 0;}
  116. break;}
  117. }
  118. }
  119.  
  120. void qs(datos1 linea1[TAM],datos2 linea2[TAM], datos3 linea3[TAM],int limite_izq,int limite_der,int filtro1,int filtro2,int opcion){
  121. int izq,der;
  122. izq=limite_izq;
  123. der=limite_der;
  124. datos1 temporal,pivote;
  125. datos2 temporal2,pivote2;
  126. datos3 temporal3,pivote3;
  127. if (opcion==1) pivote=linea1[(izq+der)/2];
  128. if (opcion==2) pivote2=linea2[(izq+der)/2];
  129. if (opcion==3) pivote3=linea3[(izq+der)/2];
  130.  
  131. switch (opcion) {
  132. case 1:
  133. do{
  134. while(verifMayorQUICK(linea1,linea2,linea3,izq,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && izq<limite_der)izq++;
  135. while(!verifMayorQUICK(linea1,linea2,linea3,der,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && der > limite_izq)der--;
  136. if(izq <=der){
  137. temporal= linea1[izq];
  138. linea1[izq]=linea1[der];
  139. linea1[der]=temporal;
  140. izq++;
  141. der--;
  142.  
  143. }
  144.  
  145. }while(izq<=der);
  146. if(limite_izq<der){qs(linea1,linea2,linea3,limite_izq,der,filtro1,filtro2,opcion);}
  147. if(limite_der>izq){qs(linea1,linea2,linea3,izq,limite_der,filtro1,filtro2,opcion);}
  148. break;
  149. case 2:
  150. do{
  151. while(verifMayorQUICK(linea1,linea2,linea3,izq,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && izq<limite_der)izq++;
  152. while(!verifMayorQUICK(linea1,linea2,linea3,der,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && der > limite_izq)der--;
  153. if(izq <=der){
  154. temporal2= linea2[izq];
  155. linea2[izq]=linea2[der];
  156. linea2[der]=temporal2;
  157. izq++;
  158. der--;
  159.  
  160. }
  161.  
  162. }while(izq<=der);
  163. if(limite_izq<der){qs(linea1,linea2,linea3,limite_izq,der,filtro1,filtro2,opcion);}
  164. if(limite_der>izq){qs(linea1,linea2,linea3,izq,limite_der,filtro1,filtro2,opcion);}
  165. break;
  166. case 3:
  167. do{
  168. while(verifMayorQUICK(linea1,linea2,linea3,izq,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && izq<limite_der)izq++;
  169. while(!verifMayorQUICK(linea1,linea2,linea3,der,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && der > limite_izq)der--;
  170. if(izq <=der){
  171. temporal3= linea3[izq];
  172. linea3[izq]=linea3[der];
  173. linea3[der]=temporal3;
  174. izq++;
  175. der--;
  176.  
  177. }
  178.  
  179. }while(izq<=der);
  180. if(limite_izq<der){qs(linea1,linea2,linea3,limite_izq,der,filtro1,filtro2,opcion);}
  181. if(limite_der>izq){qs(linea1,linea2,linea3,izq,limite_der,filtro1,filtro2,opcion);}
  182. break;
  183.  
  184. }
  185.  
  186.  
  187.  
  188. }
  189.  
  190. void quick_sort(datos1 linea1[TAM],datos2 linea2[TAM], datos3 linea3[TAM],int cant,int filtro1,int filtro2,int opcion){
  191.  
  192. switch (opcion){
  193. case 1:
  194. qs(linea1,linea2,linea3,0,cant-1,filtro1,filtro2,opcion);
  195. break;
  196. case 2:
  197. qs(linea1,linea2,linea3,0,cant-1,filtro1,filtro2,opcion);
  198. break;
  199. case 3:
  200. qs(linea1,linea2,linea3,0,cant-1,filtro1,filtro2,opcion);
  201. break;
  202. }
  203.  
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement