Vladimir_S |
13.02.2012 18:55 |
Вложений: 4
Ну вот, как вариант: сюжет "Серый Волк и Красная Шапочка". Сделано для Турбо-Паскаля, впрочем, графику там можно прицепить любую, алгоритм сохранится. Естественно, пути к файлам можно поменять. Также самостоятельно конфигурируйте параметры процедуры InitGraph. Цвета у меня инвертированы, поскольку используется черный DOS-экран. И еще - для наглядности каждая точка - это квадрат экрана 10х10 пикселей.
Код:
Uses Graph,CRT;
Var
A,B:Array[1..100,1..100] of byte;
M,N,i,j,k,l:Byte;
X0,Y0,X,Y:Word;
f:Text;
C:Char;
Code:Integer;
BEGIN
Assign(f,'D:\Input.txt');
Reset(f);
Readln(f,N,M);
For i:=1 to M do
Begin
For j:=1 to N do
begin
Read(f,C);
Val(C,A[i,j],Code);
end;
Readln(f);
End;
Close(f);
InitGraph(...);
ClearDevice;
X0:=(GetMaxX-N*10) div 2;
Y0:=(GetMaxY-M*10) div 2;
For i:=1 to M do
For j:=1 to N do
For k:=0 to 9 do
For l:=0 to 9 do
Begin
X:=X0+j*10+k;
Y:=Y0+i*10+l;
If A[i,j]=0 then
PutPixel(X,Y,Black)
else
PutPixel(X,Y,White);
End;
ReadKey;
Assign(f,'D:\Output.txt');
Rewrite(f);
N:=N div 2;
M:=M div 2;
Writeln(f,N,' ',M);
For i:=1 to M do
Begin
For j:=1 to N do
begin
B[i,j]:=A[2*i-1,2*j-1]+A[2*i,2*j-1]+A[2*i-1,2*j]+A[2*i,2*j];
If B[i,j]>1 then B[i,j]:=1 else B[i,j]:=0;
Write(f,B[i,j]);
end;
Writeln(f);
End;
Close(f);
ClearDevice;
X0:=(GetMaxX-N*10) div 2;
Y0:=(GetMaxY-M*10) div 2;
For i:=1 to M do
For j:=1 to N do
For k:=0 to 9 do
For l:=0 to 9 do
Begin
X:=X0+j*10+k;
Y:=Y0+i*10+l;
If B[i,j]=0 then
PutPixel(X,Y,Black)
else
PutPixel(X,Y,White);
End;
ReadKey;
END.
|