Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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){
- int valor;
- switch(opcion){
- case 1:{
- if (filtro1==1)
- valor=strcmp(linea1[pos].ruc,pivote.ruc);
- if (filtro1==2)
- valor=strcmp(linea1[pos].dni,pivote.dni);
- if (filtro1==3)
- valor=strcmp(linea1[pos].nombre,pivote.nombre);
- if (filtro1==4)
- valor=strcmp(linea1[pos].ap,pivote.ap);
- if (filtro1==5)
- valor=strcmp(linea1[pos].am,pivote.am);
- if (filtro1==6)
- valor=strcmp(linea1[pos].anio,pivote.anio);
- if (filtro1==7)
- valor=strcmp(linea1[pos].estado,pivote.estado);
- if (filtro1==8)
- valor=strcmp(linea1[pos].monto,pivote.monto);
- if (valor<0)return 1;//a
- else if (valor>0) return 0;
- else { //cuando a este else es porque el valor es cero debido a que ambas cadenas son iguales
- if (filtro2==1)
- valor=strcmp(linea1[pos].ruc,pivote.ruc);
- if (filtro2==2)
- valor=strcmp(linea1[pos].dni,pivote.dni);
- if (filtro2==3)
- valor=strcmp(linea1[pos].nombre,pivote.nombre);
- if (filtro2==4)
- valor=strcmp(linea1[pos].ap,pivote.ap);
- if (filtro2==5)
- valor=strcmp(linea1[pos].am,pivote.am);
- if (filtro2==6)
- valor=strcmp(linea1[pos].anio,pivote.anio);
- if (filtro2==7)
- valor=strcmp(linea1[pos].estado,pivote.estado);
- if (filtro2==8)
- valor=strcmp(linea1[pos].monto,pivote.monto);
- if (valor<=0);//aca si ya no me jodan
- else return 0;
- }
- break;}
- case 2:{
- if (filtro1==1)
- valor=strcmp(linea2[pos].dni,pivote2.dni);
- if (filtro1==2)
- valor=strcmp(linea2[pos].nombre,pivote2.nombre);
- if (filtro1==3)
- valor=strcmp(linea2[pos].ap,pivote2.ap);
- if (filtro1==4)
- valor=strcmp(linea2[pos].am,pivote2.am);
- if (filtro1==5)
- valor=strcmp(linea2[pos].genero,pivote2.genero);
- if (filtro1==6)
- valor=strcmp(linea2[pos].cargafam,pivote2.cargafam);
- if (valor<0)return 1;//a
- else if (valor>0) return 0;
- else { //cuando a este else es porque el valor es cero debido a que ambas cadenas son iguales
- if (filtro2==1)
- valor=strcmp(linea2[pos].dni,pivote2.dni);
- if (filtro2==2)
- valor=strcmp(linea2[pos].nombre,pivote2.nombre);
- if (filtro2==3)
- valor=strcmp(linea2[pos].ap,pivote2.ap);
- if (filtro2==4)
- valor=strcmp(linea2[pos].am,pivote2.am);
- if (filtro2==5)
- valor=strcmp(linea2[pos].genero,pivote2.genero);
- if (filtro2==6)
- valor=strcmp(linea2[pos].cargafam,pivote2.cargafam);
- if (valor<=0);//aca si ya no me jodan
- else return 0;}
- break;}
- case 3:{
- if (filtro1==1)
- valor=strcmp(linea3[pos].dni,pivote3.dni);
- if (filtro1==2)
- valor=strcmp(linea3[pos].nombre,pivote3.nombre);
- if (filtro1==3)
- valor=strcmp(linea3[pos].ap,pivote3.ap);
- if (filtro1==4)
- valor=strcmp(linea3[pos].am,pivote3.am);
- if (filtro1==5)
- valor=strcmp(linea3[pos].riesgo,pivote3.riesgo);
- if (valor<0)return 1;//a
- else if (valor>0) return 0;
- else { //cuando a este else es porque el valor es cero debido a que ambas cadenas son iguales
- if (filtro2==1)
- valor=strcmp(linea3[pos].dni,pivote3.dni);
- if (filtro2==2)
- valor=strcmp(linea3[pos].nombre,pivote3.nombre);
- if (filtro2==3)
- valor=strcmp(linea3[pos].ap,pivote3.ap);
- if (filtro2==4)
- valor=strcmp(linea3[pos].am,pivote3.am);
- if (filtro2==5)
- valor=strcmp(linea3[pos].riesgo,pivote3.riesgo);
- if (valor<=0);//aca si ya no me jodan
- else return 0;}
- break;}
- }
- }
- void qs(datos1 linea1[TAM],datos2 linea2[TAM], datos3 linea3[TAM],int limite_izq,int limite_der,int filtro1,int filtro2,int opcion){
- int izq,der;
- izq=limite_izq;
- der=limite_der;
- datos1 temporal,pivote;
- datos2 temporal2,pivote2;
- datos3 temporal3,pivote3;
- if (opcion==1) pivote=linea1[(izq+der)/2];
- if (opcion==2) pivote2=linea2[(izq+der)/2];
- if (opcion==3) pivote3=linea3[(izq+der)/2];
- switch (opcion) {
- case 1:
- do{
- while(verifMayorQUICK(linea1,linea2,linea3,izq,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && izq<limite_der)izq++;
- while(!verifMayorQUICK(linea1,linea2,linea3,der,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && der > limite_izq)der--;
- if(izq <=der){
- temporal= linea1[izq];
- linea1[izq]=linea1[der];
- linea1[der]=temporal;
- izq++;
- der--;
- }
- }while(izq<=der);
- if(limite_izq<der){qs(linea1,linea2,linea3,limite_izq,der,filtro1,filtro2,opcion);}
- if(limite_der>izq){qs(linea1,linea2,linea3,izq,limite_der,filtro1,filtro2,opcion);}
- break;
- case 2:
- do{
- while(verifMayorQUICK(linea1,linea2,linea3,izq,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && izq<limite_der)izq++;
- while(!verifMayorQUICK(linea1,linea2,linea3,der,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && der > limite_izq)der--;
- if(izq <=der){
- temporal2= linea2[izq];
- linea2[izq]=linea2[der];
- linea2[der]=temporal2;
- izq++;
- der--;
- }
- }while(izq<=der);
- if(limite_izq<der){qs(linea1,linea2,linea3,limite_izq,der,filtro1,filtro2,opcion);}
- if(limite_der>izq){qs(linea1,linea2,linea3,izq,limite_der,filtro1,filtro2,opcion);}
- break;
- case 3:
- do{
- while(verifMayorQUICK(linea1,linea2,linea3,izq,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && izq<limite_der)izq++;
- while(!verifMayorQUICK(linea1,linea2,linea3,der,pivote,pivote2,pivote3,filtro1,filtro2,opcion) && der > limite_izq)der--;
- if(izq <=der){
- temporal3= linea3[izq];
- linea3[izq]=linea3[der];
- linea3[der]=temporal3;
- izq++;
- der--;
- }
- }while(izq<=der);
- if(limite_izq<der){qs(linea1,linea2,linea3,limite_izq,der,filtro1,filtro2,opcion);}
- if(limite_der>izq){qs(linea1,linea2,linea3,izq,limite_der,filtro1,filtro2,opcion);}
- break;
- }
- }
- void quick_sort(datos1 linea1[TAM],datos2 linea2[TAM], datos3 linea3[TAM],int cant,int filtro1,int filtro2,int opcion){
- switch (opcion){
- case 1:
- qs(linea1,linea2,linea3,0,cant-1,filtro1,filtro2,opcion);
- break;
- case 2:
- qs(linea1,linea2,linea3,0,cant-1,filtro1,filtro2,opcion);
- break;
- case 3:
- qs(linea1,linea2,linea3,0,cant-1,filtro1,filtro2,opcion);
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement