38 lines
1,013 B
Ada
38 lines
1,013 B
Ada
with Ada.Text_Io; use Ada.Text_Io;
|
|
|
|
procedure Max_Subarray is
|
|
type Int_Array is array (Positive range <>) of Integer;
|
|
Empty_Error : Exception;
|
|
function Max(Item : Int_Array) return Int_Array is
|
|
Start : Positive;
|
|
Finis : Positive;
|
|
Max_Sum : Integer := Integer'First;
|
|
Sum : Integer;
|
|
begin
|
|
if Item'Length = 0 then
|
|
raise Empty_Error;
|
|
end if;
|
|
|
|
for I in Item'range loop
|
|
Sum := 0;
|
|
for J in I..Item'Last loop
|
|
Sum := Sum + Item(J);
|
|
if Sum > Max_Sum then
|
|
Max_Sum := Sum;
|
|
Start := I;
|
|
Finis := J;
|
|
end if;
|
|
end loop;
|
|
end loop;
|
|
return Item(Start..Finis);
|
|
end Max;
|
|
A : Int_Array := (-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1);
|
|
B : Int_Array := Max(A);
|
|
begin
|
|
for I in B'range loop
|
|
Put_Line(Integer'Image(B(I)));
|
|
end loop;
|
|
exception
|
|
when Empty_Error =>
|
|
Put_Line("Array being analyzed has no elements.");
|
|
end Max_Subarray;
|