comp.lang.ada
 help / color / mirror / Atom feed
From: Stuart Palin <stuart.palin@0.0>
Subject: Re: Simple program to find average of 3 numbers
Date: Fri, 04 Jul 2003 09:37:45 +0100
Date: 2003-07-04T09:37:45+01:00	[thread overview]
Message-ID: <3F053CD9.135E7340@0.0> (raw)
In-Reply-To: 3F0511BF.6000403@attbi.com

"Robert I. Eachus" wrote:
> 
> prashna wrote:
>  > Hi friends,
>  >
>  > What is wrong in the following program which is giving constraint
>  > error?
>  >
>  > procedure average is type ONE_TO_100 is range 1 .. 100;
>  >
>  > OBJ1, OBJ2, OBJ3, AVG  : ONE_TO_100; begin OBJ1 := 70; OBJ2 := 70;
>  > OBJ3 := 70; AVG := OBJ1+OBJ2+OBJ3/3; end average;
> 
<snip>
> 
> Oh, and then I could talk about your formatting, and identifier style.
> But I will address those by example.  Try:
> 
> procedure Average is
>    subtype One_to_100 is Integer range 1 .. 100;
>    Obj_1, Obj_2, Obj_3: One_to_100 := 70;
>    Avg: One_to_100;
> begin
>    Avg := (Obj_1+Obj_2+Obj_3)/3;
>    -- I assume you really wanted the average, rather than 163.
> end Average;

You might also want to consider what values the intermediate
calculation Obj_1+Obj_2+Obj_3 can take.  In this instance
because your type is constrained to a number which should be
well within the bounds of integer you would not experience a
problem.

Questions to ask yourself (and seek answers to):
a) What if the bounds of the type were larger?
b) How might it be possible to detect a potential constraint
error at compile time rather than during execution?

--
Stuart Palin



  reply	other threads:[~2003-07-04  8:37 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-04  5:01 Simple program to find average of 3 numbers prashna
2003-07-04  5:22 ` John R. Strohm
2003-07-04  5:34   ` Cephus�
2003-07-04  9:54     ` Tarjei T. Jensen
2003-07-05 17:49       ` Cephus�
2003-07-04  5:33 ` Robert I. Eachus
2003-07-04  8:37   ` Stuart Palin [this message]
2003-07-05 10:06     ` Preben Randhol
2003-07-04  5:39 ` tmoran
2003-07-04  9:28   ` prashna
2003-07-04 11:02     ` Stuart Palin
2003-07-04 16:20     ` Pascal Obry
2003-07-05  1:25       ` Robert I. Eachus
     [not found]     ` <1e3ht-ig4.ln1@beastie.ix.netcom.com>
2003-07-04 21:17       ` Jeffrey Creem
2003-07-05  5:07         ` Anders Wirzenius
2003-07-05 14:39 ` Marqmc5
2003-07-06  3:47 ` g_ak
2003-07-08  5:06   ` prashna
2003-07-09 15:25     ` Matthew Heaney
2003-07-09 21:38       ` Robert I. Eachus
2003-07-10 13:52         ` Matthew Heaney
2003-07-10 15:46           ` Robert I. Eachus
2003-07-11  0:56             ` Randy Brukardt
2003-07-11 21:54           ` Robert A Duff
2003-07-11 21:50         ` Robert A Duff
2003-07-11 23:32           ` Robert I. Eachus
2003-07-10  4:55       ` Simon Wright
  -- strict thread matches above, loose matches on Subject: below --
2003-07-09  6:24 christoph.grein
replies disabled

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