![]() |
|
#2
|
|||
|
|||
![]() ты вместо использования c и d как ограничения значений, используешь их для ограничения номеров элементов и не проверяешь по последнему нечетному элементу (ну или я не понял задание).
Код:
function FindMaxBoundary(A : Array Of integer) : Integer; var I : Integer; begin For I := High(A) DownTo Low(A) Do If (A[i] mod 2) <> 0 Then Begin Result := I; Exit; End; Raise Exception.Create('Все элементы массива четные.'); end; function FindMaxItem(A : Array Of Integer; c, d : Integer) : Integer; var MaxIdx : Integer; begin Result := -1; MaxIdx := FindMaxBoundary(A); For I := Low(A) To MaxIdx-1 Do If (A[i] >= c) And (A[i] <= d) Then If Result = -1 Then Result := I Else If A[i] > A[Result] Then Result := I; If Result = -1 Then Raise Exception.Create('Максимальный элемент не найден.'); end; Собственно вызов для поиска: Код:
Try n := FindMaxItem(A,c,d); WriteLn(Format('Макс. элемент A[%d] = %d.',[n,A[n]])); Except On E : Exception WriteLn(E.Message); End; |