Pascal/Turbo Pascal - Escribir un programa para el manejo de vectores

 
Vista:

Escribir un programa para el manejo de vectores

Publicado por carmelo S. (2 intervenciones) el 10/12/2006 19:23:09
hola,
acabo de empezar a estudiar programación y tengo un ejercicio sobre vectores y no no sé hacerlo.Si alguien pudiera echarme una mano...Es el siguiente:
Escribir un programa para el manejo de vestores, partiendo de las siguientes declaraciones:
const N=;
typo tipo_datos=integer;
diemension1=1..N
tipo_vector=array[dimension1] of tipo_datos
en el que se implementen los siguientes modulos.
1. leer los datos de un vector.
2. visualizar los datos de un vector
3. eliminar el dato q ocupa una posición p del vector, desplazando para ello otros datos de este si es necesario, obteniendo un nuevo vector con una con una posicion libre al final de los datos
ejemplo: dado V:[4,5,6,...] tras eliminar el dato en la posicion 2 queda:[4,6,...]
4.Insertar un dato en una posicion p del vector quedando el vector con los datos q tenia mas uno. ejemplo: Vado V[4,5,6,7,..] quede[4,9,5,6,7,8,...]
5. Girar los datos de un vector lleno n pasiciones hacia la derecha, comenzando de nuevo por el principio se es necesario.
ejemplo: dato V:[4,5,6,7,8,0] tras girar los datos 2 posiciones a la derecha se obtiene[8,0,4,5,6,7]
6. dado un vector comprobar si existen en el mismo dos o más datos iguales,devolviendo el dato que se repitntrae en más ocasiones, la primera posicion en que se encuentra y el nº de veces q se repite en total.

Parece sencillo pero me he leido apuntes sobre vectores y aun con eso no se ni por donde empezar.Por favor echeme alguien una mano.
gracias.
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

Escribir un programa para el manejo de vectores

Publicado por Carlos Guimaraenz (265 intervenciones) el 11/12/2006 20:14:12
Hola Carmelo!
Un array es una sucesión de datos de un mismo tipo, agrupados en una misma estructura, y a cada uno de éstos se accede mediante un índice, definido entre los valores que asignaste en la declaración.

Por ejemplo, si tenemos un TVECTOR = ARRAY[1..10] OF INTEGER, para acceder al 7mo número integer en VECTOR : TVECTOR, haremos VECTOR[7] tanto para asignarle un valor, como para conocerlo.

Para eliminar un determinado elemento, hay que ubicarlo en el array para determinar su índice. Luego, a partir de ese índice, recorres hasta N - 1 tomando el valor de la posición siguiente, haciendo el corrimiento. Y la última posición (N) la marcas con un valor que no utilices. Una buena práctica es tener una variable que lleve la dimensión lógica, ésto es la cantidad de datos relevantes que ocupan tu array. Con ésta, a medida que insertas datos aumentas su valor, y cuando eliminas, decrementas su valor.

Para insertar, debes comprobar si tienes lugar (si llevas una dimensión lógica, verificas que sea menor que N). Luego, si el lugar donde insertar es al final, lo agregas sin mayores problemas que hacer una simple asignación. Caso contrario, debes hacer un corrimiento hacia la derecha, para dejar el hueco en la posición donde debes insertar el nuevo dato.

Para girar los datos, puedes utilizar otro vector auxiliar, donde irás ubicando los elementos del original desplazados N posiciones, teniendo en cuenta que no te queden elementos "fuera del vector" (lo cual te daría error).

Para el último punto, va a depender de los datos a manejar y si están ordenados o no. Si lo están, vas a recorrer sumando a medida que se repitan los datos, y cuando cambie inicias una nueva cuenta. Deberás llevar variables para el máximo, para el valor, para las posiciones, etc.

Una aclaración, no se si fue un error de tipeo en el foro, pero donde dice TYPO, es TYPE.

Cualquier duda que te surja avisa. Un abrazo!
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

Escribir un programa para el manejo de vectores

Publicado por carmelo S. (2 intervenciones) el 11/12/2006 21:43:46
Muchas gracias. Ahora lo intentare.
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