[C con Clase] Ayuda para crear subarray

Luis Belmonte luispool1312 en hotmail.com
Lun Ago 12 16:43:59 CEST 2013


SP> LB>        for (int x=0; x<j-i+1;x++)  ap->v[i+x-1]=a2->v[x];
SP> Efectivamente, el problema está en este bucle. Haces la asignación al revés.

Tienes razón, pero ahora al modificarlo me dá error en la compilación:
[Error] incompatible types when assigning to type 'Array' from type 'int'

La función anterior se quedaría asi:

// Crea y devuelve un subarray del array a comprendido
// entre los índices i y j.
// Req: 1<=i<=j<=ArrayTam(a)
Array ArrayCreaSubarray(Array a, int i, int j)
{      
       ArrayAp a2=ArrayCrea(j-i+1);
       for (int x=0; x<j-i+1;x++) a2->v[x]=a->v[i+x-1];
       return a2;
}


El error me lo tira en la función main, al llamar a esta función:

case 9:{
                      int i,j;
                      printf("Introduzca el indice inferior del subarray: \n");
                      scanf("%d",&i);
                      printf("Introduzca el indice superior del subarray: \n");
                      scanf("%d",&j);
                      if((i>=1)&&(i<=j)&&(j<=ArrayTam(arnd)))
                      {
                         Array aux=arnd;
                 --->    arnd=ArrayCreaSubarray(arnd, i, j);
                         ArrayLibera(aux);
                         ArrayImprime(arnd);
                      }
                      else
                      {
                          printf("Indices incorrectos.\n"); 
                      }
                     } 
                      break;
Este sería el bloque donde da el error, donde he puesto la flecha para verlo claro. Decir también que la variable arnd es de tipo Array.


Más información sobre la lista de distribución Cconclase