type
digit = 1..9;
arrtype = array [1..9,1..9] of digit;
strtype = string[3];
var
in_mat1, in_mat2 : arrtype;
row, col : digit;
const
checksum = 45;
function row_check(mat : arrtype) : boolean;
var
i : integer;
j : integer;
sum : integer;
begin
i := 1;
row_check := true;
while row_check and (i <= 9) do
begin
sum := 0;
for j := 1 to 9 do
sum := sum + mat[i,j];
if sum = checksum
then i := i + 1
else row_check := false;
end;
end;
function col_check(mat : arrtype) : boolean;
var
i : integer;
j : integer;
sum : integer;
begin
i := 1;
col_check := true;
while col_check and (i <= 9) do
begin
sum := 0;
for j := 1 to 9 do
sum := sum + mat[j,i];
if sum = checksum
then i := i + 1
else col_check := false;
end;
end;
function ss_check(mat : arrtype) : boolean;
var
i, j, rr, cc, rd, cd : integer;
count : integer = 1;
sum : integer;
begin
ss_check := true;
rd := 1;
while ss_check and (rd <= 3) do
begin
cd := 1;
while ss_check and (cd <= 3)do
begin
sum := 0;
for i := 1 to 3 do
for j := 1 to 3 do
begin
rr := i + 3 * (rd - 1);
cc := j + 3 * (cd - 1);
sum := sum + mat[rr,cc];
end;
{ writeln('The ', count, ' th square is checking = ',sum);}
count := count + 1;
if sum = checksum
then cd := cd + 1
else ss_check := false;
end;
rd := rd + 1;
end;
end;
function test(mat :arrtype) : strtype;
begin
if row_check(mat) and col_check(mat) and ss_check(mat)
then test := 'yes'
else test := 'no'
end;
BEGIN
while not eof do begin
{ writeln('Please enter two answers for checking.');}
for row := 1 to 9 do
begin
for col := 1 to 9 do
read(in_mat1[row,col]);
readln;
end;
writeln;
for row := 1 to 9 do
begin
for col := 1 to 9 do
read(in_mat2[row,col]);
readln;
end;
writeln(test(in_mat1));
writeln(test(in_mat2));
{ if row_check(in_mat1) and col_check(in_mat1) and ss_check(in_mat1)
then writeln('yes')
else writeln('no');
if row_check(in_mat2) and col_check(in_mat2) and ss_check(in_mat2)
then writeln('yes')
else writeln('no');
readln;}
end;
END.
OLE (line:8)
冗餘輸出
請勿輸出題目未要求的文字: no求救!!
type
digit = 1..9;
arrtype = array [1..9,1..9] of digit;
strtype = string[3];
var
in_mat1, in_mat2 : arrtype;
row, col : digit;
const
checksum = 45;
function row_check(mat : arrtype) : boolean;
var
i : integer;
j : integer;
sum : integer;
begin
i := 1;
row_check := true;
while row_check and (i <= 9) do
begin
sum := 0;
for j := 1 to 9 do
sum := sum + mat[i,j];
if sum = checksum
then i := i + 1
else row_check := false;
end;
end;
function col_check(mat : arrtype) : boolean;
var
i : integer;
j : integer;
sum : integer;
begin
i := 1;
col_check := true;
while col_check and (i <= 9) do
begin
sum := 0;
for j := 1 to 9 do
sum := sum + mat[j,i];
if sum = checksum
then i := i + 1
else col_check := false;
end;
end;
function ss_check(mat : arrtype) : boolean;
var
i, j, rr, cc, rd, cd : integer;
count : integer = 1;
sum : integer;
begin
ss_check := true;
rd := 1;
while ss_check and (rd <= 3) do
begin
cd := 1;
while ss_check and (cd <= 3)do
begin
sum := 0;
for i := 1 to 3 do
for j := 1 to 3 do
begin
rr := i + 3 * (rd - 1);
cc := j + 3 * (cd - 1);
sum := sum + mat[rr,cc];
end;
{ writeln('The ', count, ' th square is checking = ',sum);}
count := count + 1;
if sum = checksum
then cd := cd + 1
else ss_check := false;
end;
rd := rd + 1;
end;
end;
function test(mat :arrtype) : strtype;
begin
if row_check(mat) and col_check(mat) and ss_check(mat)
then test := 'yes'
else test := 'no'
end;
BEGIN
while not eof do begin
{ writeln('Please enter two answers for checking.');}
for row := 1 to 9 do
begin
for col := 1 to 9 do
read(in_mat1[row,col]);
readln;
end;
writeln;
for row := 1 to 9 do
begin
for col := 1 to 9 do
read(in_mat2[row,col]);
readln;
end;
writeln(test(in_mat1));
writeln(test(in_mat2));
{ if row_check(in_mat1) and col_check(in_mat1) and ss_check(in_mat1)
then writeln('yes')
else writeln('no');
if row_check(in_mat2) and col_check(in_mat2) and ss_check(in_mat2)
then writeln('yes')
else writeln('no');
readln;}
end;
END.
OLE (line:8)
冗餘輸出
請勿輸出題目未要求的文字: no求救!!
就算已經知道他是錯的
但是還是要等他輸入完畢 才能輸出
應該是因為他還沒輸入完畢 就break出去 顯示出文字 因此會OLE
平常解一些題目也會這樣。