Pascal/Turbo Pascal - AYUDA con array

 
Vista:

AYUDA con array

Publicado por Juan (3 intervenciones) el 29/01/2009 00:41:09
Como puedo leer de un archivo de texto y guardar cada linea en dos array de diferente tamaño.

Son array dinamicos y la funcion para calcular los elementos de cada array seria asi:

Function numero_valores_linea(var fich: text):integer;
(*Funcion que devuelve el numero de elementos de una linea*)

Var

contador:integer;
aux:integer;
begin
contador:=0;

while not eoln(fich) do
begin
read(fich,aux); //sino se pone na no lee hay k asignarle var aunk no la guardemos
contador:=contador+1;

end;

readln(fich); //indica el salto de linea
numero_valores_linea :=contador;
end;

Pero ahora tengo que hacer un procedimiento

que Lea los datos del fichero 'valores.txt', y almacene la primera línea leida en el array dinámico VALORES_X y la segunda línea del fichero en el array dinámico VALORES_Y.

Este procedimiento no me sale ¿alguien sabe como sería?
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:AYUDA con array

Publicado por Miguel (159 intervenciones) el 29/01/2009 17:05:23
Te voy a dar una idea. Cuando tu lees un archivo de texto lo puedes hacer por caracteres o por linea, si tu lo ahces por linea, en la variable que usaste para leerla vas a tener una cadena, bien una cadena no es mas que un array de caracteres, si quieres has la prueba, por ejemplo si la variable se llamaba x, y tienes una cadena ahi adentro, si escribes write(x[1]); veras por pantalla el primer caracter de esa cadena, es decir puede hacer lo que quieras con eso.
Tu ya tienes una funcion que te cuenta los caracteres de cada linea, con eso ya esta listo.
Esto que te digo, lo digo suponiendo que sabes trabajar con archivos.
Cualquier cosa me dices, no hay drama.
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:AYUDA con array

Publicado por Juan Ramon (3 intervenciones) el 29/01/2009 17:30:58
Si eso lo entiendo pero mi problema es que tengo que hacer el procedimiento de leer los valores y como cada linea(k es un array) tiene distinto tamaño pos no se como leerlo la función solo me sirve para llamarla en el programa principal y reservar en memoria los dos array y eso lo hace bien pero cuando le digo que me muestre en pantalla los array me sale todo cero.
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
sin imagen de perfil

RE:AYUDA con array

Publicado por Willy (177 intervenciones) el 30/01/2009 07:08:01
Hmmm, deberías mostrar tu código para analizarlo porque es difícil entender cuál es tu verdadero problema..
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:AYUDA con array

Publicado por Juan Ramon (3 intervenciones) el 30/01/2009 11:30:01
Este es mi código:

Program lee_array;
Uses crt;

TYPE

vector= array of integer;

Var

x:vector;
y:vector;
fichero:text;
numero_elementos_x,numero_elementos_y,i:integer;

Function numero_valores_linea(var fich: text):integer;
(*Funcion que devuelve el numero de elementos de una linea*)

Var

contador:integer;
aux:integer;
begin
contador:=0;

while not eoln(fich) do
begin
read(fich,aux); //sino se pone na no lee hay k asignarle var aunk no la guardemos
contador:=contador+1;

end;

readln(fich); //indica el salto de linea
numero_valores_linea :=contador;
end;


Procedure LeeValores(var fich:text; v1:vector;v2:vector);//v2:vector);
var

contador:integer;

begin

contador:=0;
while not eoln(fich) do
begin
read(fich,v1[contador]);
contador:=contador+1;

end;
readln(fich);


end;

Begin
clrscr;
assign(fichero,'valores.txt');
reset(fichero);
//cuenta el numero de elementos del array x
numero_elementos_x:=numero_valores_linea(fichero);
//cuenta el numero de elementos del array y
numero_elementos_y:=numero_valores_linea(fichero);

SetLength(x,numero_elementos_x);
SetLength(y,numero_elementos_y);

LeeValores(fichero,x,y);
close(fichero);
writeln('El array x tiene ',numero_elementos_x,' elementos');
writeln('El array y tiene ',numero_elementos_y,' elementos');

For i:=low(x) to high(x) do
write(x[i]);
writeln;
For i:=low(y) to high(y) do
writeln(y[i]);

Repeat until keypressed;
End.

Cuando hago el bucle for para que me muestre en pantalla el contenido de los array me sale todo cero.
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:AYUDA con array

Publicado por Miguel (159 intervenciones) el 31/01/2009 02:19:33
Bueno la verdad que ni si quiera se puede compilar ese codigo. Mal declarado el tipo, el array es un tipo estructurado (por eso no entiendo lo de array dinamico, acabo de terminar un año viendo pascal y no conosco los array dinamicos, perdon si me equivoco), se tiene que declarar su dimension, por mas que no se la conosca (una desventaja, se puede solucionar con punteros).
Otra cosa que veo mal, es la acción de LeeValores, le pasas como parametros dos vectores, pero solo se usa uno.
Salvo que te hayan pedido contar la cantidad de caracteres por renglon no hace falta, o al menos no veo para que. Si tu tienes que pasar un renglon del archivo de texto al array lo pasas recorriendolo como estas haciendo, se pasa caracter por caracter hasta que encuentra un fin de linea, cuando lo encuentra salta al otro renglon pero el indice (contador) sigue estando en posicion. Ahi no veo el error.
Si quieres saber que tamaño tiene el array (hasta donde esta cargado con caracteres) utiliza una marca virtual, modifica un poco la acción que usas para recorrer el archivo de texto, agregando un parametro de salida llamado marca, en el cual una vez que recorras el archivo a marca le asignas el valor de contador menos uno (marca:=contador-1), que es la cantidad de caracteres (limpios) leidos.
Bueno este es el problema de las consultas por el foro, uno no puede entender bien ni explicar bien.
Pero seguimos en contacto...
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
sin imagen de perfil

RE:AYUDA con array

Publicado por Willy (177 intervenciones) el 06/02/2009 05:23:42
Juan.
Para mí que deberías de hacer el programa desde cero.
Más creo que estás tratando de convertir hacia Pascal un programa ya hecho en otro lenguaje (Como C++) por la sintaxis que usas para hacer los comentarios.

Realmente no entiendo tu código ni entiendo como es que dices que cuando quieres ver en pantalla el contenido del array te sale cero.

Cómo podrías ver algo en pantalla si el programa no se puede conpilar?

Anímate! Enpieza desde cero!
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:AYUDA con array

Publicado por rafael (1 intervención) el 10/09/2009 21:36:06
nota[i]:=a;
este tipo de codigo
no se porque
no asepta mi pascal, es desir no reconose los corchetes ni los parentesis
con que otro codigo podria reconoser
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