Sort three variables: Difference between revisions

Content deleted Content added
Jquorning (talk | contribs)
Ada version
Line 63: Line 63:
Show the results of the sort here on this page using at least the values of those shown above.
Show the results of the sort here on this page using at least the values of those shown above.
<br><br>
<br><br>

=={{header|Ada}}==
<lang Ada>with Ada.Text_IO;
with Ada.Strings.Unbounded;

procedure Sort_Three is

generic
type Element_Type is private;
with function "<" (Left, Right : in Element_Type) return Boolean;
procedure Generic_Sort (X, Y, Z : in out Element_Type);

procedure Generic_Sort (X, Y, Z : in out Element_Type)
is
procedure Swap (Left, Right : in out Element_Type) is
T : constant Element_Type := Left;
begin
Left := Right;
Right := T;
end Swap;
begin
if Y < X then Swap (X, Y); end if;
if Z < Y then Swap (Y, Z); end if;
if Y < X then Swap (X, Y); end if;
end Generic_Sort;

procedure Test_Unbounded_Sort is
use Ada.Text_IO;
use Ada.Strings.Unbounded;

X : Unbounded_String := To_Unbounded_String ("lions, tigers, and");
Y : Unbounded_String := To_Unbounded_String ("bears, oh my!");
Z : Unbounded_String := To_Unbounded_String ("(from the ""Wizard of OZ"")");

procedure Sort is
new Generic_Sort (Unbounded_String, "<");
begin
Sort (X, Y, Z);
Put_Line (To_String (X));
Put_Line (To_String (Y));
Put_Line (To_String (Z));
New_Line;
End Test_Unbounded_Sort;

procedure Test_Integer_Sort is

use Ada.Text_IO;

procedure Sort is
new Generic_Sort (Integer, "<");

X : Integer := 77444;
Y : Integer := -12;
Z : Integer := 0;
begin
Sort (X, Y, Z);
Put_Line (X'Image);
Put_Line (Y'Image);
Put_Line (Z'Image);
New_Line;
end Test_Integer_Sort;

begin
Test_Unbounded_Sort;
Test_Integer_Sort;
end Sort_Three;</lang>

{{out}}
<pre>(from the "Wizard of OZ")
bears, oh my!
lions, tigers, and

-12
0
77444</pre>


=={{header|Aime}}==
=={{header|Aime}}==