#7207: 為何會OLE


cfng0731 (cfng0731)


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
求救!!
#7210: Re:為何會OLE


akira0331 (小迷糊)


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
求救!!

以我的經驗發生OLE,輸入的地方程式沒寫好,請再check程式
#7212: Re:為何會OLE


cfng0731 (cfng0731)


以我的經驗發生OLE,輸入的地方程式沒寫好,請再check程式
我在自己的平台運行完全成功,但在此平台上卻出現錯誤?!
#8344: Re:為何會OLE


a127000555 (OAO)


以我的經驗發生OLE,輸入的地方程式沒寫好,請再check程式
我在自己的平台運行完全成功,但在此平台上卻出現錯誤?!


就算已經知道他是錯的 
但是還是要等他輸入完畢 才能輸出
應該是因為他還沒輸入完畢 就break出去 顯示出文字 因此會OLE
平常解一些題目也會這樣。