ayuda con un error
Publicado por juan (19 intervenciones) el 14/01/2010 12:04:35
buenas, diego soy el pesado del programa de cambio de bases no se si te acuerdas de que llegamos a abrir media pagina de links xD
tenia que hacer un programa en el que partiendo de dos archivos .txt con una matriz cuasivacia comprimida en cada, sumarlas y dar el resultado tambien de forma comprimida en otro .txt, diria que esta parte la tengo bien, la otra parte pide que haga lo mismo que lo de antes pero guardandolo en otro .txt y aparte muestre en pantalla la matriz en forma tradicional.
ejemplos:
1.txt 2.txt 3.txt
4 5 4 5 4 5 ----> filas x columnas
5 1 5 2 5 3 posicion en la matriz, valor
6 2 6 1 6 3 posicion en la matriz, valor
10 10 10 7 10 17 posicion en la matriz, valor
resumiendo, que en la 2ª parte donde tengo que mostrar en pantalla la matriz de forma tradicional he hecho un contador que haga Writeln; cuando el contador sea multiplo del valor de columnas, osea puse( if CONTADOR mod COLUMNAS = 0 then writeln;) pero no se por que razon al ejecutar no hace lo que deberia, salta cuando no debe, en mi prueba da el primer salto con contador = 4, el 2º salta al contador=9 , el 3º salta cuando =15, y el ultimo pues... quedando asi la matriz de 4x5
x x x x
x x x x x
x x x x x x
x x x x x
probe con una matriz 6x6 y queda asi
x x x x x
x x x x x x
x x x x x x x
x x x x x x
x x x x x x
el procedure que hice para el 2º apartado
procedure MostrarMatrizFtxt(var f: tpMatrizFtxt);
var m,n:integer; maxContador,contador,posicion: integer; valor:real;
begin
readln(f,m,n);
maxContador:=m*n;
contador:=0;
salto:=0;
while (not eof(f)) do
begin
if ((contador mod n) = 0) then
writeln;
readln(f,posicion,valor);
contador:=contador+1;
salto:=salto+1;
while (contador<>posicion) do
begin
if ((contador mod n) = 0) then
writeln;
write('0':5);
contador:=contador+1;
salto:=salto+1;
end;
write(valor:5:1);
end;
while (contador<>maxContador) do
begin
if ((contador mod n) = 0) then
writeln;
write('0':5);
contador:=contador+1;
salto:=salto+1;
end;
writeln;
end;
tenia que hacer un programa en el que partiendo de dos archivos .txt con una matriz cuasivacia comprimida en cada, sumarlas y dar el resultado tambien de forma comprimida en otro .txt, diria que esta parte la tengo bien, la otra parte pide que haga lo mismo que lo de antes pero guardandolo en otro .txt y aparte muestre en pantalla la matriz en forma tradicional.
ejemplos:
1.txt 2.txt 3.txt
4 5 4 5 4 5 ----> filas x columnas
5 1 5 2 5 3 posicion en la matriz, valor
6 2 6 1 6 3 posicion en la matriz, valor
10 10 10 7 10 17 posicion en la matriz, valor
resumiendo, que en la 2ª parte donde tengo que mostrar en pantalla la matriz de forma tradicional he hecho un contador que haga Writeln; cuando el contador sea multiplo del valor de columnas, osea puse( if CONTADOR mod COLUMNAS = 0 then writeln;) pero no se por que razon al ejecutar no hace lo que deberia, salta cuando no debe, en mi prueba da el primer salto con contador = 4, el 2º salta al contador=9 , el 3º salta cuando =15, y el ultimo pues... quedando asi la matriz de 4x5
x x x x
x x x x x
x x x x x x
x x x x x
probe con una matriz 6x6 y queda asi
x x x x x
x x x x x x
x x x x x x x
x x x x x x
x x x x x x
el procedure que hice para el 2º apartado
procedure MostrarMatrizFtxt(var f: tpMatrizFtxt);
var m,n:integer; maxContador,contador,posicion: integer; valor:real;
begin
readln(f,m,n);
maxContador:=m*n;
contador:=0;
salto:=0;
while (not eof(f)) do
begin
if ((contador mod n) = 0) then
writeln;
readln(f,posicion,valor);
contador:=contador+1;
salto:=salto+1;
while (contador<>posicion) do
begin
if ((contador mod n) = 0) then
writeln;
write('0':5);
contador:=contador+1;
salto:=salto+1;
end;
write(valor:5:1);
end;
while (contador<>maxContador) do
begin
if ((contador mod n) = 0) then
writeln;
write('0':5);
contador:=contador+1;
salto:=salto+1;
end;
writeln;
end;
Valora esta pregunta


0