TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy

TEAM-ADA@LISTSERV.ACM.ORG

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Jerry van Dijk <[log in to unmask]>
Reply To:
Jerry van Dijk <[log in to unmask]>
Date:
Sat, 26 Jun 1999 02:52:11 +0200
Content-Type:
text/plain
Parts/Attachments:
text/plain (47 lines)
W. Wesley Groleau x4923 wrote:

> > How do you swap two values of two seperate variables without declaring a
> >  temp variable?
>
> 1. Write a Stack package.
>
> 2. Push first variable on the stack.
>
> 3. Assign second variable to first variable.
>
> 4. Pop first variable off the stack.

Nah, that's cheating. If the variables are modular or unsigned, use the
the very old fashioned:

        with Ada.Text_IO;

        procedure Show_It is

           type DWORD is mod 2 ** 32;

           procedure Swap (A, B : in out DWORD) is
           begin
              A := A xor B;
              B := B xor A;
              A := A xor B;
           end Swap;

           A : DWORD :=  5;
           B : DWORD := 10;

        begin
           Ada.Text_IO.Put_Line (  "A =" & DWORD'Image (A) &
                                 ", B =" & DWORD'Image (B));
           Swap (A, B);
           Ada.Text_IO.Put_Line (  "A =" & DWORD'Image (A) &
                                 ", B =" & DWORD'Image (B));
        end Show_It;

:-) :-)

--
-- Jerry van Dijk | Leiden, Holland
-- Team Ada       | [log in to unmask]
-- see http://stad.dsl.nl/~jvandyk

ATOM RSS1 RSS2