Bài 1.
• Input : m,n ; A[i,j] ( i =1..m ; j=1..n )
• Output : A[i,j]
• Data structure : array[1..100,1..100] of integer
• Design : - docfile
- xuly
- vietfile
• Algorithms :
* docfile
- Mở file ( repave.inp ) để đọc
- Đọc dòng đầu m,n
- i = 1..m
+ j = 1..n
+ đọc A[ i ,j]
- Đóng file
* Xuly
- i = 1..m
- j = 1..n
- Nếu odd(i) và 0dd(j) thi
+ nếu ngang (i,j) thi xếp 2 dọc con khong xếp 2 ngang
* vietfile
- Mở flie để viết
- i = 1 .. m
- j = 1 .. n
- Viết A[i,j]
- Đong file
* Code :
program bai_1;
type mang=array[1..100,1..100] of integer;
var A:mang;
m,n:integer; F:text;
Procedure docfile;
var i,j:integer;
begin
Assign(F,'repave.inp');
reset(F);
readln(F,m,n);
for i:=1 to m do
begin
for j:=1 to n do
read(F,A[i,j]);
readln(F);
end;
close(F);
end;
Function ngang(d,c:integer):boolean;
begin
ngang:=(A[d,c]=A[d,c+1]) and (A[d+1,c]=A[d+1,c+1]);
end;
Procedure xepdoc( d,c:integer; var k:integer);
begin
A[d,c]:=k; A[d+1,c]:=k;
A[d,c+1]:=k+1; A[d+1,c+1]:=k+1;
end;
Procedure xepngang(d,c:integer; var k:integer);
begin
A[d,c]:=k; A[d,c+1]:=k;
A[d+1,c]:=k+1; A[d+1,c+1]:=k+1;
end;
Procedure xuly;
var i,j,k:integer;
begin
k:=1;
for i:=1 to m do
for j:=1 to n do
if odd(i) and odd(j) then
begin
if ngang(i,j) then xepdoc(i,j,k)
else xepngang(i,j,k);
k:=k+2;
end;
end;
Procedure vietfile;
var i,j:integer;
begin
Assign(F,'repave.out');
Rewrite(F);
for i:=1 to m do
begin
for j:=1 to n do
write(F,A[i,j]:4);
writeln;
end;
close(F);
end;
Begin
docfile;
xuly;
vietfile;
end.