comp.lang.ada
 help / color / mirror / Atom feed
* do while loop help ( newbie)
@ 2006-02-04 23:16 isaac2004
  2006-02-05  2:01 ` jimmaureenrogers
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: isaac2004 @ 2006-02-04 23:16 UTC (permalink / raw)


hi im new to ada and im having trouble with executing a do while loop.
im trying to take an input number called Number and sort it into
ascending and descending order and subtract the two to get a new number
called NewNumber. i want the loop to continue looping until variable
Number is equal to variable NewNumber. if this doesnt make sense here
is my code

with Ada.Text_IO;
use Ada.Text_IO;
with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;
procedure Assignment2 is

-----------------------------------------------------------------------------------------------
   --| Recieves four variables and uses Kaprekar's Function to arrange
them into descending order and
   --| and subtract the number in ascending order from it
   --| Author: Isaac Levin,
   --| Last Modified: January 2006

----------------------------------------------------------------------------

   subtype Digit is Natural range 0 .. 9;

   D1        : Digit;                   -- a list of four single digit
numbers
   D2        : Digit;
   D3        : Digit;
   D4        : Digit;
   Number    : Natural range 0 .. 9999; -- number taken from user
   Temp      : Natural;
   AsNumber  : Natural;                 -- number in ascending order
   DsNumber  : Natural;                 -- number in descening order
   NewNumber : Natural;                 -- new number derived from
DsNumber - AsNumber



   -- procedure specifications
   procedure Order (
         X : in out Natural;
         Y : in out Natural);

   -- procedure body
   procedure Order (
         X : in out Natural;
         Y : in out Natural) is
      -- pre: X and Y are assigned values;
      -- post: X has the smaller value and Y has the larger value

      Temp : Natural; --copy of number originally in X

   begin  -- Order
      if X > Y then
         Temp := X ;       -- store X into temp
         X := Y ;          -- move old y into x
         Y := Temp ;       -- move old x from temp to y
      end if;
   end Order;
begin



   loop
      begin -- block for exception handler
         Put(Item => "Please enter a four digit number.");
         New_Line;
         Get(Item => Number);
         exit;


      exception
         when Constraint_Error =>
            Put ("The input value or result is out of range.");
            Skip_Line;
            New_Line;
         when Data_Error =>
            Put (Item => "The input value is not well formed.");
            Skip_Line;
            New_Line;
      end;       -- block for exception handler
   end loop;


   while Number /= NewNumber loop

      -- extract digits of number
      Temp := Number ;
   D1:= Temp rem 10 ;
   Temp := Temp / 10 ;
   D2:= Temp REM 10;
   Temp:= Temp / 10;
   D3:= Temp REM 10;
   Temp := Temp / 10;
   D4 := Temp REM 10;

      -- sort the digits of the number
      Order (
         X => D1,
         Y => D2);
      Order (
         X => D1,
         Y => D3);
      Order (
         X => D1,
         Y => D4);
      Order (
         X => D2,
         Y => D3);
      Order (
         X => D2,
         Y => D4);
      Order (
         X => D3,
         Y => D4);

      -- put ascending and descending digits back into numbers

      AsNumber := (D1 * 1000) + (D2 * 100) + (D3 * 10) + D4;
      DsNumber := (D4 * 1000) + (D3 * 100) + (D2 * 10) + D1;

      -- subtract ascending number from descending number
      NewNumber := DsNumber - AsNumber;


      -- display the results
      Put(
         Item  => Dsnumber,
         Width => 1);
      Put(Item => " - ");
      Put(
         Item  => Asnumber,
         Width => 1);
      Put(Item => " = ");
      Put(
         Item  => Newnumber,
         Width => 1);

     Number := NewNumber;

   end loop ;

end Assignment2;

it looks right to me but it just will not start the loop any help would
be great. thanx before hand




^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-02-06  1:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-04 23:16 do while loop help ( newbie) isaac2004
2006-02-05  2:01 ` jimmaureenrogers
2006-02-05  8:03   ` Pascal Obry
2006-02-05 12:18   ` Stephen Leake
2006-02-05  2:07 ` Jeffrey R. Carter
     [not found] ` <bjfau11bp7g4b5id8vprbai6bc81qfgr96@4ax.com>
2006-02-05  4:39   ` isaac2004
2006-02-05 21:25     ` Björn Persson
2006-02-05 22:25       ` Jeffrey R. Carter
2006-02-06  1:01         ` Björn Persson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox