Pascal/Turbo Pascal - Matriz Multidimensional y txt

 
Vista:

Matriz Multidimensional y txt

Publicado por ramon (2158 intervenciones) el 04/11/2011 20:58:00
{El nombre del archivo lo pondrás como lo tengas tu pero solo leerá tres lineas y las presentara
en pantalla espero te sirva}

program matriz;
uses
crt;
type
matriztri = array[1..3,1..80] of char;
var
f : text;
dato : matriztri;
dad : string;
k, g : integer;


procedure lecturaarchivo;
var
i, cont : integer;
begin
assign(f,'architex.txt');
{$I-} reset(f); {$I+}
if ioresult <> 0 then
halt(1);
cont := 1;
while not Eof(f) do
begin
readln(f,dad);
for i := 1 to length(dad) do
begin
dato[cont][i] := dad[i];
end;
cont := cont + 1;
if cont > 3 then
cont := 3;
end;
close(f);
end;


begin
clrscr;
lecturaarchivo;
for k := 1 to 3 do
begin
for g := 1 to 80 do
begin
write(dato[k][g]);
end;
end;
readln;
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

Matriz Multidimensional y txt

Publicado por BlackSmithTech (5 intervenciones) el 04/11/2011 23:51:15
Hola amigo, antes que nada gracias por tu respuesta, te cuento, amolde el codigo q me pasaste a lo que necesito hacer, me compila bien, pero me da un "exit code: 201", y no muestra por pantalla lo que levante del txt.
Espero q me puedas ayudar


program tpotomas1;
uses crt;
type
matriztri = array[1..5,1..5,1..3] of char;

var
f : text;
m3d : matriztri;
linea : string;
i,j, k: integer;


procedure lecturaarchivo;
var o,p,q : integer;

begin
assign(f,'c:\jf\tomas.txt');
reset(f);

while not Eof(f) do
begin
readln(f,linea);
for o := 1 to length(linea) do
begin
m3d[o][p][q] := linea[o];
end;

close(f);
end;
end;

begin
readkey;
clrscr;
lecturaarchivo;
for i:= 1 to 5 do
begin
for j:= 1 to 5 do
begin
for k:=1 to 3 do
begin
write(m3d[i][j][k]);
end;
end;
end;

readkey;

end.









[url]http://www.blacksmithtech.com.ar
http://www.blacksmithjobs.com.ar[/url]
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

Matriz Multidimensional y txt

Publicado por ramon (2158 intervenciones) el 05/11/2011 12:58:25
{Revisa lo que te pongo para entender las matrices como se cargan}

program tpotomas1;
uses
crt;
type
matriztri = array[1..5,1..5,1..3] of char;

{Me puedes esplicar esta matriz segun la pones tienes
1..5 lineas con 1..5 posiciones con 1..3 caracteres o sea
5 * 3 = 15 caracteres 15 * 5 = 75 en total en el archivo}
{un archivo de texto no puede estar formado de esa forma}
{son lineas y caracteres por linea o sea 1..3 lineas por
1..los caracteres que quieras por linea}

var
f : text;
m3d : matriztri;
linea : string;
i,j, k: integer;


procedure lecturaarchivo;
var
o,p,q : integer;
begin
assign(f,'c:\jf\tomas.txt');
reset(f);
while not Eof(f) do
begin
readln(f,linea);
for o := 1 to length(linea) do
begin
m3d[o][p][q] := linea[o]; {Esta matriz se deve de cargar asin}
q := q + 1;
if q > 3 then
begin
q := 1;
p := p + 1;
if p > 5 then
p := 5:
end;
end;
close(f);
end;
end;

begin
readkey;
clrscr;
lecturaarchivo;
for i:= 1 to 5 do
begin
for j:= 1 to 5 do
begin
for k:=1 to 3 do
begin
write(m3d[i][j][k]);
end;
end;
end;
readkey;
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

Matriz Multidimensional y txt

Publicado por ramon (2158 intervenciones) el 05/11/2011 14:16:10
{Esto recorre las tres columnas pero como veras si la columna es mayor de 5 se repite}

program matriz5;
uses
crt;
const
archivotexto : array[1..3] of string = (
'Estoy declarando un tipo ',
'Esto no te entendi que me', {Simulacion archivo texto 3 lineas}
'quiero que pueda recorrer');

type
matrizr = array[1..3,1..5,1..5] of char;
var
mat : matrizr;
i, t, e : integer;


procedure cargamatriz; {cargamos la matriz}
begin
for i := 1 to 3 do
for t := 1 to 5 do
begin
for e := 1 to 5 do
begin
mat[i][t][e] := archivotexto[i][e];
end;
end;
end;

begin
clrscr;
cargamatriz;
for i := 1 to 3 do {presentamos la matriz y veras lo que pasa}
for t := 1 to 5 do
begin
for e := 1 to 5 do
begin
write(mat[i][t][e]);
end;
writeln;
end;
readln;
end.

{Lo pongo asín para que veas los resultados y comprendas lo que te explico
los arrays tridimensionales no funcionan para archivos de texto pues son lineas
de x cantidad de caracteres por linea eso equivaldría a un array de [x ] por [x ] por [x ]
con lo cual repetiríamos el primer [x] por dos veces espero esto te sea de ayuda
pero si es un archivo de texto no emplees ese array sino tendrás dificultad para tratarlo}
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

Matriz Multidimensional y txt

Publicado por BlackSmithTech (5 intervenciones) el 07/11/2011 00:48:07
Disculpame amigo que este tan molesto y pesado...pero no entiendo en que parte del codigo que me pasaste puedo poner la ruta del archivo...y como...

saludos
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

Matriz Multidimensional y txt

Publicado por BlackSmithTech (5 intervenciones) el 07/11/2011 01:31:27
Pienso (si...pienso a veces ;-) )
que esto no deberia ser asi:
type
matrizr = array[1..3,1..5,1..5] of char;

Debería ser asi:
type
matrizr = array[1..1,1..1,1..1] of char;

Ya que son 3 columnas de 1 caracter cada una...
Ahora bien como le doy el tratamiento que necesito a este array (operaciones matematicas)


Tambien los ciclos for deberian ir de 1 a cantidad de lineas del archivo (conoces alguna funcion de pascal que me devuelva un integer igual a la cantidad de lineas...)
Sino lo puedo hacer con
while not eof(fichero) do
begin
lineas:=lineas+1;
end;

No se si me explico, necesito:
1) igualar la matriz a tres columnas de un archivo,
2)luego recorrer esa matriz,
3)convertir esos datos a integer,
4)procesarlos
5)presentar los resultados

(con estos tres ultimos puntos no creo tener 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