Показать сообщение отдельно
Старый 21.05.2015, 19:10   #9 (permalink)
MagentaTiger
Специалист
 
Аватар для MagentaTiger
 
Регистрация: 27.04.2015
Адрес: Москва
Сообщений: 1,423
Записей в дневнике: 4
Сказал(а) спасибо: 52
Поблагодарили 53 раз(а) в 16 сообщениях
Репутация: 18120
По умолчанию

Вам надо "вывалиться" из цикла при первом же не совпадении, а не прогонять цикл до конца, т.е. если переписать вашу функцию:
Код:
function Test(A: matrix;k:integer):boolean;
var i:integer;
begin
Test:=true; 
if k=n then
   for i:=1 to n do 
    if A[k,i]<>A[1,i] then 
      begin 
         Test:=false;
          exit; {* сразу выйдем из функции, дальше смысла проверять нет *}
       end;
// if k<>n then это заменим на else
else
  for i:=1 to n do 
      if A[k,i]<>A[k+1,i] then 
           begin 
              Test:=false;
               exit; {* сразу выйдем из функции, дальше смысла проверять нет *}
           end;
end;
вместо exit, можно использовать break, в данном случае это не принципиально.
MagentaTiger вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070