jeh_dias
(usa Ubuntu)
Enviado em 02/04/2013 - 10:32h
Olá , bom dia .
Eu tenho uma imagem (chuck.pgm) e vou trabalhar com arquivos . A matriz desta imagem tem na primeira linha dois caracteres , a partir da segunda linha só tem números .
Vou colar algumas linhas da matriz .
P2
200 200
255
219 220 223 227 230 230 226 221 218 218 202 210 201 187 212 227 224
235 225 210 214 215 210 215 214 195 175 165 160 161 180 200 228
229 227 222 216 216 221 227 221 219 214 237 138 4 10 2 2
2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 4 8 7 11 33 58 78
A questão é , quando associo uma variável ao arquivo , estou declarando-a como string e após a segunda linha chamo a função Val e converto essa variável string para integer . Posso estar usando a função Val errada , porém não obtenho sucesso . Não consigo escrever a imagem depois .
A melhor metodologia seria essa ? Ou tem alguma outra mais fácil ?
Aqui está o que já fiz .
Program desafio;
Const lin = 200;
Var
arq : text ;
i,j,k,percorre,erro :integer;
mat : array[1..200,1..200] of integer;
leitura:string;
Begin
erro := 0;
assign(arq,'chuck.pgm');
reset(arq);
while not Eof(arq) do
begin
readln(arq,leitura);
for i:=1 to length(leitura) do
begin
if (leitura[1] = 'p2')then
// Nesta linha quero verificar se a variável esta na
// primeira linha , mas quando incrementar o for e o i = 2 , leitura estará na posição 2 e não 1 . Se colocar leitura[i] = 'p2' o problema será o mesmo . Não consegui resolver este problema .
begin
Val(leitura[i+1],percorre,erro);
// Chamo a função a partir da segunda linha , porém não sei se posso fazer leitura[i+1];
readln(arq,percorre);
for j:=1 to lin do
for k:=1 to lin do
begin
readln(arq,mat[j,k]);
writeln(mat[j,k]);
end;
end;
end;
end;
close(arq);
readln;
end.
Obrigada .