[C con Clase] Ayuda para crear subarray

Luis Belmonte luispool1312 en hotmail.com
Lun Ago 12 14:18:47 CEST 2013


Hola este es mi primer correo así que espero que todo se ajuste a las reglas, haganmelo saber de lo contrario.

Bueno una pequeña introducción a mi problema es que estoy haciendo un trabajo de la universidad en la que se crea un TDA "Array" en el que se define un tipo de datos y unas operaciones. Vale, pues una de las funciones consiste en crear un array a2 que es subconjunto del array a de la siguiente manera:
Si array a contiene los elementos 1 2 3 4 5 6, la función nos devolverá el subarray comprendido entre los índices pasados como parámetros. 

Por ejemplo: ArrayCreaSubarray(Array a,int linf, lsup)
Siendo a el array anteriormente mencionado, linf y lsup 3 y 5 respectivamente.
ArrayCreaSubarray nos devolveria un array a2 con los elementos 3 4 5.

Aquí el codigo de las funciones pertinentes:

// Crea y devuelve un array de tamaño n con sus elementos
// inicializados a cero e indexados desde 1 hasta n.
// Req: n>0
Array ArrayCrea(int n)
{
      ArrayAp a=malloc(sizeof(ArrayRep));
      a->n=n;
      a->v=malloc(sizeof(int)*n);
      for (int i=0;i<a->n;i++)
          a->v[i]=0;
      return a;      
}
// 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 ap=a;
       ArrayAp a2=ArrayCrea(j-i+1);
       for (int x=0; x<j-i+1;x++)  ap->v[i+x-1]=a2->v[x];
       return a2;
}

Creo que el problema debe estar en el bucle for pero no entiendo que estoy haciendo mal. ¿Alguna ayuda?

Gracias.


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