2011-10-17 4 views
1

많은 다른 함수가 배열을 어지럽히는 Ada 프로그램을 수행하고 있습니다. 정렬 함수가 모두 들어있어, 이제는 불변의 루프를 사용하여 배열의 최대 값을 검색해야합니다. 그 함수에 대한 루프를 설계하십시오. 어떤 도움?Ada의 배열에서 최대 값 찾기

답변

2

단순히 전체 배열을 반복하면 어떻습니까? 이 같은

뭔가 : 배열이 비어있는 경우

function Get_Maximum (Of : My_Array_Type) return Element_Type is 
    Maximum : Element_Type := Of (Of'First); 
begin 
    for I in Of'First + 1 .. Of'Last loop 
     if Of (I) > Maximum then 
     Maximum := Of (I); 
     end if; 
    end loop; 
    return Maximum; 
end Get; 

는 예외를 발생하지만, 이러한 경우가 필요한 경우이, 독자들에게 훈련으로 남아 있습니다.

+0

이 경우, 당신은 불변 루프를 사용 했 ? 내가 invariant의 전체 개념을 이해하는지 모르겠다. – Misty

+0

예약어이기 때문에 "Of"를 식별자로 사용할 수 없다는 오류가 나타납니다. – Misty

+0

정렬! 감사! – Misty

1

오이노네는 정렬되지 않은 배열에 대한 정확하지만, 당신이 다음 정렬 기능이 왜 배열을 정렬 할 올바르게 작동, 그리고 상태로 사용

Maximum := Of(Of'Last); 
+1

* 사전 정렬 된 배열에서 이것은 사소한 일입니다. 아직 정렬되지 않은 배열에서는 정렬을 통해 간단한 스캔보다 시간이 오래 걸립니다. –