[r]
Trang 1Bài giải đề thi học sinh giỏi tinh năm học 2008-2009 môn tin học
Gv Thắng tin
Bài kho an toàn
Program Bai1;
Uses Crt;
A: Array[1 100,1 100] of byte;
M,N,i,j:Byte; Kt: Boolean;
Begin
Assign(f,’ANTOAN.INP’);
Reset(f);
Read(f,M,N);
While not eof(f) Do
For i:=1 to M do For j:=1 to N do
Read(f,a[i,j]);
Close(f);
Kt:=False;
Assign(f,’ANTOAN.OUT’);
Rewrite(f);
For i:=2 to M-1 Do
For j:=2 to N-1 Do
If a[I,j]=0 then Begin
If (A[i,j+1]=1)and(A[i,j-1]=1)and(A[i+1,j+1]=1)and
(A[i-1,j+1]=1) and(A[i+1,j-1]=1)and(A[i+1,j]=1)and(A[i-1,j]=1)and
(A[i-1,j-1]=1) Then Begin
Writeln(f,i,’ ‘,j);
Kt:=true;
End;
End;
If Kt=False then Writeln(f,-1);
Close(f);
End.
ANTOAN.INP
1 1 1 0
1 0 1 1
1 1 1 1
0 1 0 1
0 1 1 1
Trang 3Bài xử lý mảng một chiều
Program Bai2;
Uses crt;
Var f:text; A:Array[1 10000] of integer;
N,s,max,i: integer;
Begin
Assign(f,’SO.INP’);
Reset(f);
N:=1;
While not eof(f) do
Begin
Read(f,a[n]) Inc(n);
End;
Close(f);
S:=0; max:=a[1];
For i:=1 to n-1 do
Begin
S:=S+a[i];
If a[i]>max then max:=a[i];
End;
Assign(f,’SO.OUT’);
Rewrite(f);
Writeln(f,s);
Writeln(f,max);
For i:=1 to n-1 do
If a[i]=max then write(f,i,’ ‘);
Close(f);
Readln;
End.
SO.INP
1 2 3 8 7 5 5 8 6 4
ANTOAN.OUT
2 2
4 3
Trang 4Bài xử lý xâu lặp
Uses crt;
Var f:text; S1,S2:string;
I,j:integer;
Begin
Clrscr;
Assign(f,’XAU.INP’);
Reset(f);
Readln(f,S1); Readln(f,S2);
Close(f);
I:=0;
While Pos(S1,S2)<>0 Do
Begin
Inc(i);
J:=Pos(S1,S2);
Delete(S2,1,j);
End;
Assign(f,’XAU.OUT’);
Rewrite(f);
Write(f,j);
Close(f);
Readln;
End.
XAU.INP
aba
bababababa
SO.OUT 49
8
4 8
XAU.OUT 4