From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,866f55656f224cc8 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-02-18 02:30:32 PST Date: Wed, 18 Feb 2004 18:21:22 +0800 From: Adrian Hoe User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Question from newbie References: <40302ec4$1_2@news.tm.net.my> <4033365e_1@news.tm.net.my> In-Reply-To: <4033365e_1@news.tm.net.my> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit NNTP-Posting-Host: 219.95.190.199 X-Original-NNTP-Posting-Host: 219.95.190.199 Message-ID: <40333c69_1@news.tm.net.my> X-Trace: news.tm.net.my 1077099625 219.95.190.199 (18 Feb 2004 18:20:25 +0800) Organization: TMnet Malaysia Path: archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.mathworks.com!news-out.cwix.com!newsfeed.cwix.com!news1.tm.net.my Xref: archiver1.google.com comp.lang.ada:5645 Date: 2004-02-18T18:21:22+08:00 List-Id: Cecilia Chew wrote: > Hi all, > I'm an Ada learner and under a supervisor. This is one of my task during > learning period. From group comments that had provided, I did some > amendments but the program still have errors. I wonder what to do. > Below is after amendments program : > > =========================================================================== > with Ada.Text_Io, Ada.Integer_Text_Io; > use Ada.Text_Io, Ada.Integer_Text_io; > > procedure Sort is > subtype Index is Integer range 1 .. 10; > subtype Char is Character range 'a' .. 'z'; > type Str is array (Index) of Char; > procedure Ascending (Left : in out Character; Right : in out Character); > > procedure Ascending (Left : in out Character; Right : in out > Character) is > > Temp : Character; > begin > if Left > Right then > Temp := Left; > Left := Right; > Right := Temp; > end if; > end Ascending; > > Num : Index; > Input : Str; > > begin > Put ("Please enter the number of character : "); > Get (Num); > Ada.Text_Io.Skip_Line; > New_Line; > if Num not in Index then > Put ("Please enter 1 to 10 characters only!"); > else > Put ("Please enter" & Integer'Image(Num) & " characters : "); > for Character_number in Index'First .. Num loop > Get (Input(Character_number)); > for Character_Number in 1 .. num loop > Ascending (Left => Input(Character_Number), > Right => Input(Character_Number + 1)); > Input(Num) := Input (Character_Number); > end loop; > Put (Input (Num)); > end loop; > end if; > end Sort; > =============================================================================== > > This program could get user input characters but not the specified x > character and any range of characters will occurred error as below. > > raised CONSTRAINT_ERROR : sort.adb:36 range check failed > > where is the problem? The problem is "simple". Perhaps you did not look hard enough. You are trying to access an array out of bound. I suggest you go through you code again carefully. More to this, your program flow has many flaws/errors. 1.) Based on your design, your program does not do what I expected. Why do you limit the number of characters to 10? 2.) There is a serious flaw in your loop. I suggest you to to go back to your design and flow charts and redesign your for...loop. 3.) Your entire sorting algorithm is wrong as well as the way you pass your parameter(s) to your sort procedure. -- Adrian Hoe m a i l b o x AT a d r i a n h o e . c o m