Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/05/2010, 18:02
Avatar de extremoo
extremoo
 
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: mergesort errores

borre una parte pequeña que me parece no afectaba el funcionamiento y agrege el codigo que me dices me envia el siguiente error

merge_dec2.c: In function ‘main’:
merge_dec2.c:67: warning: format ‘%i’ expects type ‘int’, but argument 3 has type ‘void *’







Código C:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<string.h>
  5.  
  6. void merge(int *a, int l, int r, int n)
  7. {
  8.     int n1 = n-l+1, n2 = r-n, i,j,k;
  9.     int  b[n-l+2], c[r-n+1];
  10.     int t;
  11.     b[n1] = c[n2] = 2147483647;
  12.  
  13.     for(i=0;i<n1;i++) b[i] = a[l+i];
  14.     for(i=0;i<n2;i++) c[i] = a[n+1+i];
  15.     i = j =  0;
  16.  
  17.     for(k=l;k<=r;k++){
  18.         if (b[i] <= c[j])
  19.             a[k] = b[i++];
  20.         else
  21.             a[k] = c[j++];
  22.     }
  23.     return ;
  24. }
  25.  
  26. void *mergesort(int a[], int low, int high)
  27. {
  28.   int mid;
  29.  
  30.   if(low<high)
  31.     {
  32.       mid=(low+high)/2;
  33.       mergesort(a,low,mid);
  34.       mergesort(a,mid+1,high);
  35.       merge(a,low,high,mid);
  36.     }
  37.     if(high==low)
  38.       {
  39.       return a;
  40.       }
  41.   return(0);
  42. }
  43.  
  44.  
  45. int main ()
  46. {
  47.   float total,inicio, final;
  48.   inicio=clock();
  49.  
  50.   FILE *ofp, *ifp;
  51.  
  52.   ifp = fopen("aleatorio.txt","r");
  53.   int N, i;
  54.  
  55.   fscanf(ifp,"%i", &N);
  56.   int d[N];
  57.   int *j;
  58.     for(i=0;i<N;i++)
  59.     {
  60.       fscanf(ifp,"%i", &d[i]);
  61.     }
  62.      
  63.   ofp = fopen("merge_dec.txt","w");
  64.  
  65.   for(i=0;i<N;i++)
  66.     {
  67.     fprintf(ofp,"%i\n",mergesort(d,0,N));
  68.     }
  69.  
  70.  
  71. fclose(ofp);
  72. fclose(ifp);
  73.  
  74. final=clock();
  75. total=(final-inicio)/(double) CLOCKS_PER_SEC;
  76. printf("%f\n",total);
  77.  
  78. return 0;
  79. }