2013-03-22 2 views
-4

다른 개발자가 작업 한 코드의 일부가 누락되었습니다.잃어버린 코드 (InArray) 재구성 - cont

나는 몇 가지를 해독 할 수 있었다, 여기에 전문가들은 다른 사람과 나를 도왔다은

나는 InArray라는 부울 기능이 필요합니다.

나는 그것이 TIntArray 소요 정수 내가 그것의 나머지가 완료되는 방법을 모르겠습니다 정수가 TIntArray

TIntArray = array of Integer; 


function InArray (A: TIntArray; n: Integer): Boolean; 
begin 
// result:= 
end; 

존재 여부 부울을 반환 알고있다.

어떤 도움을 주시면 감사하겠습니다.

고맙습니다

답변

4

대부분의 경우, n 배열에 속하는 경우 기능 검사 :

function InArray(A: TIntArray; n: Integer): boolean; 
var 
    i: integer; 
begin 
    result := false; 
    for i := low(A) to high(A) do 
    if A[i] = n then 
     Exit(true); 
end; 

델파이의 이전 버전 (< 2009)를 사용하는 경우, 당신은

을 할 필요가
function InArray(A: TIntArray; n: Integer): boolean; 
var 
    i: integer; 
begin 
    result := false; 
    for i := low(A) to high(A) do 
    if A[i] = n then 
    begin 
     result := true; 
     break; 
    end; 
end; 

대신. 이처럼

+1

는 왜 두 번 결과에 할당? C 파생 된 언어에 대한 반환 진술을 기대합니다. –

+0

맛의 물질. 내 생각에 제 버전은 작고 읽기가 더 쉽습니다. ('Exit (retVal)'카운트를하지 않습니까?) –

+0

여전히 두 번 할당합니다. 순수한 맛의 수학자로서, 그것은 온화하게 대발합니다. 현대 출구가 더 좋습니다. 그러나 다른 모든 언어 에서처럼 func에서 호출자까지 가치가 전달되는 것이 아니라 여전히 피 묻은 var 매개 변수입니다. 환기구. Rant는 호언 장담했다. –

1

:

function InArray (A: TIntArray; n: Integer): Boolean; 
var 
    i: Integer; 
begin 
    for i := 0 to high(A) do 
    if A[i]=n then 
    begin 
     Result := True; 
     exit; 
    end; 
    Result := False; 
end; 
+0

예, 전에도 같은 말을했습니다! :) –