Pascal/Turbo Pascal - ayuda con un error

 
Vista:

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;
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 un error

Publicado por juan (19 intervenciones) el 14/01/2010 12:08:00
una cosa, lo de salto ignorarlo, lo puse para probar cuando salta valia 5 y resetearlo a 0 entonces, pero daba el mismo problema al parecer
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 un error

Publicado por juan (19 intervenciones) el 14/01/2010 12:47:32
nada, al final descubri el fallo, el contador no estaba puesto en el lugar adecuado y da el salto cuando no debe por eso, gracias
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 un error

Publicado por Diego Romero (996 intervenciones) el 14/01/2010 14:51:30
Si quieres un control total sobre la presentación de datos en pantalla, el procedimiento GotoXY() mueve el cursor a un lugar específico de la pantalla.
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