Pascal/Turbo Pascal - array dinamico

 
Vista:

array dinamico

Publicado por jnandezz (6 intervenciones) el 10/07/2003 18:10:40
Hola a todos, queria preguntaros una cosa acerca d los arrays dinamicos.
Necesito implementar un TAD ( tipo abstracto de datos ) Array Dinamico, con diversas operaciones ( Inicializar el array, ampliar tamaño.....)y lo tengo q hacer utilizando una estructura de datos de Lista dinamica enlazada con punteros.
El problema q tengo es q no se como hacerlo, a ver si me explico, no como hacer las operaciones, sino, como hacer lo q es el arra dinamico en si. Se q es un array, y se q es una lista enlazada con punteros ( por ej Tlista=^Nodo;
Nodo=RECORD
Clave:integer;
Sig:Tlista;
END;
Y entiendo lo q es el concepto, pero no se como declarar un tipo array dinamico. Simplemente es en vez d poner Clave:integer poner ahi un array................ A ver si me podeis echar una mano, xq una vez q tenga eso ya puedo ponerme a trabajar en los diferentes procedimientos y funciones q tengo q hacer, pero si no se como declarar ese tipo, jeje, no puedo hacer nada d nada
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:array dinamico

Publicado por Diego Romero (786 intervenciones) el 11/07/2003 00:47:31
A riesgo de no haber entendido bién lo que deseas.
Si pones
Tlista=^Nodo;
Nodo=RECORD
Clave:Array[1..10] of loquesea;
Sig:Tlista;
END;
No estarás declarando ningún array dinámico, solo una lista de arrays.
Por lo que interpreto lo que deberías hacer es declarar una estructura record tal como:

Tlista=^Nodo;

Nodo=RECORD
Clave:integer;
Sig:Tlista;
END;

TArrayDin=Record
TamArray: Word; { o integer}
Primero: TLista;
end;

donde TArrayDin en su campo TamArray llevarás la cuenta de cuántos nodos hay en la lista. Por supuesto debes escribir las funciones que hagan que el array funcione.
CrearArrayDinamico(ArrayDinamico);DestruirArrayDinamico(ArrayDinamico);
PonerTamano(ArrayDinamico, Tamano);
Asignar(ArrayDinamico, Valor, Posicion);
TamanoActual(ArrayDinamico): Word;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:array dinamico

Publicado por jnandezz (6 intervenciones) el 11/07/2003 12:17:04
Sera asi? si lo ahces asi como puedes acceder a un indice del array d manera directa???
Ya q lo comentas, una vez definido ese tipo, tengo q crear una serie d operaciones, como:
-Iniciar un array con un tamaño determinado, dnd las posiciones del array esten vacias o con un valor indeterminado
-Ampliar el tamaño del array en tantas posiciones como se necesite
-Reducir el tamaño del array
-leer el contenido almacenado en una posicion determinada del array
-almacenar en una posicion del array un valor determinado
-funcion q devuelva el tamaño del array

La verdad es q estoy medio perdido, xq no se como definir este array dinamico. Si es com tu dices, como accedo a una posicion determinada del array??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:array dinamico

Publicado por Diego Romero (786 intervenciones) el 12/07/2003 18:01:01
Evedentemente debes crear una función para ello, por ejemplo podría ser algo como
Valor:=ValorArrayDin(ArrayDin, Posicion);
tú te encargarás de escribir lo que hace la función ValorArrayDin.
Debes entender que el concepto de Array Dinámico en Turbo Pascal no existe de por sí, no hay una estructura de datos predefinida que ya haga lo que quieres de la misma forma que un array normal.
A menos que cambies de compilador, el FreePascal sí tiene Array Dinamico como estructura predefinida y se usa de forma parecida a un array normal, te doy un ejemplo de cómo sería en FP (no funciona en TP).
var
A: Array of Integer; { nota que no he declarado de cuántas posiciones es el array }
I: integer;
begin
SetLength(A, 10); { digo que el array A tendrá 10 posiciones enpezando desde la cero }
A[9]:=100; { asigno la última posición }
SetLength(A, 5); { redimenciono el array, el valor de la posición 9 deja de existir }
for i:=0 to Length(A) do { recorrer el array dinamico, Length devuelve el tamaño actual del array, lo mismo que hace con los Strings }
Writeln(A[i]);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar