[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