Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef NUMGBASES_H
- #define NUMGBASES_H
- int* tablaI(const int*, int,char);
- int* tablaC(const char**,int,char);
- int* tablaD(const double*const, int,char);
- int divide(int*,int *,int,int);
- int divide_v2(double*,int *,int,int);
- int divide_v3(const char **,int *,int,int);
- void quicksort(int*,int *,int,int);
- void quicksort_v2(double*,int*,int,int);
- void quicksort_v3(const char**,int*,int,int);
- #endif /* NUMGBASES_H */
- int divide_v3(const char** arreglo,int *indices, int start,int end){
- //gg
- int left,right,pivot,temp;
- pivot=indices[start];
- left=start;right=end;
- while(left<right){
- while(strcmp(arreglo[indices[right]],arreglo[pivot])>0){
- right--;
- }
- while(left<right && strcmp(arreglo[indices[left]],arreglo[pivot])<=0){
- left++;
- }
- if(left<right){
- temp=indices[left];
- indices[left]=indices[right];
- indices[right]=temp;
- }
- }
- temp=indices[right];
- indices[right]=indices[start];
- indices[start]=temp;
- return right;
- }
- void quicksort_v3(const char**arreglo,int *indices,int start,int end){
- int pivot;
- if(start<end){
- pivot=divide_v3(arreglo,indices,start,end);
- quicksort_v3(arreglo,indices,start,pivot-1);
- quicksort_v3(arreglo,indices,pivot+1,end);
- }
- }
- int* tablaC(const char**arreglo,int n,char indicador){
- int *indices,*indices2;
- indices2=new int[100];
- indices=new int[100];
- for(int i=0;i<n+1;i++){
- indices[i]=i;
- }
- if(indicador=='A' || indicador=='a'){
- quicksort_v3(arreglo,indices,0,n);
- return indices;
- }else{
- quicksort_v3(arreglo,indices,0,n);
- //esta ordenado ascendentemnte
- for(int i=0;i<n+1;i++){
- indices2[i]=indices[n-i];
- }
- //for(int i=0;i<n+1;i++) printf("%d\n",indices2[i]);
- delete [] indices;
- return indices2;
- }
- //aplico el metodo de ordenacion quicksort
- /*if(indicador=='A' || indicador=='a'){
- quicksort_v2(arr_aux2,indices,0,n);
- delete [] arr_aux2;
- return indices;
- }else{
- quicksort_v2(arr_aux2,indices,0,n);
- //esta ordenado ascendentemnte
- for(int i=0;i<n+1;i++){
- indices2[i]=indices[n-i];
- }
- //for(int i=0;i<n+1;i++) printf("%d\n",indices2[i]);
- delete [] arr_aux2;delete [] indices;
- return indices2;
- }*/
- }
- /*------------------------------------*/
- int main(int argc, char** argv) {
- //int* arreglo;
- double* arreglo;
- int n;
- scanf("%d",&n);
- /*arreglo=new int[100];
- for(int i=0;i<n;i++){
- scanf("%d",&arreglo[i]);
- }
- int *index=tablaI(arreglo,n-1,'D');
- for(int i=0;i<n;i++){
- printf("%d ",index[i]);
- }*/
- //prueba tabla de doubles
- /*arreglo=new double[100];
- for(int i=0;i<n;i++){
- scanf("%lf",&arreglo[i]);
- }
- int *index=tablaD(arreglo,n-1,'D');
- for(int i=0;i<n;i++){
- printf("%d ",index[i]);
- }*/
- const char** nombres;
- nombres=new const char* [100];
- getchar();
- for(int i=0;i<n;i++){
- scanf("%s",&nombres[i]);
- }
- for(int i=0;i<n;i++){
- printf("%s\n",&nombres[i]);
- }
- int* index=tablaC(nombres,n-1,'A');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement