[C con Clase] Ayuda para crear subarray

Davidson, Steven srd4121 en njit.edu
Lun Ago 12 21:49:37 CEST 2013


Hola Luis,

2013/8/12 Luis Belmonte <luispool1312 en hotmail.com>

> Efectivamente los dos tenéis razón, Array no lo había definido en el
> fichero cabecera y por eso me estaba dando tantos problemas, al definirlo
> en el fichero cabecera como un apuntador a void, todo funciona a la
> perfección.
>
>
Esto no me parece nada aconsejable. Si el proyecto trata de que representes
un array, entonces el TDA debería llamarse, 'Array', o algo parecido y
deberías estar manipulando variables (u objetos) de tipo, 'Array'. No estoy
muy seguro de por qué necesitas 'ArrayRep', al menos que tengas pensado
otra cosa. Por lo que veo, deberías tener al menos, 'Array', y para
facilitar algunas cosas, puedes tener 'Array_ptr' para representar:  'Array
*'.

Las funciones deberían aceptar punteros a 'Array' y a veces doble punteros:
para controlar los punteros en sí. Por ejemplo,

Array_ptr Array_Inicializa( Array_ptr pa );   /* Los miembros a 0 */
Array_ptr Array_Reserva( Array_ptr pa, int n );  /* Reserva memoria para N
enteros */
Array_ptr Array_Libera( Array_ptr pa );   /* Libera la memoria */

int Array_Accede( const Array_ptr pa, int i );  /* Consulta: return
pa->v[i] */
Array_ptr Array_Asigna( Array_ptr pa, int i, int num );  /* Asignación:
pa->v[i] = num */

Array_ptr Array_SubArray( const Array_ptr pa, Array_ptr paSub, int i, int j
);  /* Crear SubArray: paSub = pa[i,j] */

y así sucesivamente.

No he usado las funciones que hay por defecto porque en el enunciado nos
> dice como debemos hacerlo y no utiliza funciones para ello. De todos modos
> tampoco las conocía así que me servirán para un futuro, gracias.
>
> Ahora en la función ArrayCreaSubarray si tengo que trabajar con una
> variable local porque de lo contrario me tira error. ¿Me equivoco?
>

Como estás creando un nuevo array, sí necesitas una variable local, o como
he escrito previamente puedes pasar un parámetro.


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130812/d8df9892/attachment.html>


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