Programación General > Pascal
Problema con array
Juan Ramon:
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?
m0skit0:
¡Bienvenido al foro Juan Ramon!
--- Cita de: "Juan Ramon" ---que Lea los datos del fichero 'valores.txt'
--- Fin de la cita ---
Esto supongo que te resultará fácil puesto que ya lo haces en esta función con ReadLn().
--- Cita de: "Juan Ramon" ---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
--- Fin de la cita ---
¿Puedes poner la declaración de tipo de los arrays dinámicos?
Salud
Juan Ramon:
Tengo que hacer un programa que me lea de un archivo de texto y guarde cada linea en un array dinamico.
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);
var
contador:integer;
begin
contador:=0;
while not eoln(fich) do
begin
read(fich,v1[contador],v2[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);
writeln;
For i:=low(y) to high(y) do
writeln(y);
Repeat until keypressed;
End.
Cuando hago el bucle for para que me muestre en pantalla el contenido de los array me sale todo cero.
Lo que esta mal es el procedimiento LeeValores ¿Podrían ayudarme?
Gracias
m0skit0:
Por favor, utiliza las etiquetas de código.
--- Código: Pascal ---Procedure LeeValores(var fich:text; v1:vector;v2:vector);var contador:integer; begin contador:=0; while not eoln(fich) do begin read(fich,v1[contador],v2[contador]); contador:=contador+1; end; readln(fich);end; Tu problema radica en el mal uso de var. Cuando un parámetro lleva var (VARiable), es cuando se pasa por referencia, y cuando no, por valor. Esto es un poco confuso en Pascal, la verdad.
--- Código: Pascal ---Procedure LeeValores(fich:text; var v1:vector; var v2:vector);var contador:integer; begin contador:=0; while not eoln(fich) do begin read(fich,v1[contador]); read(fich,v2[contador]); contador:=contador+1; end; readln(fich);end;
Juan Ramon:
Si lo hago como dices me sale un error. Error:File tipes must be var parameters. ¿Por qué?
Navegación
[#] Página Siguiente
Ir a la versión completa