Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > comparing numbers

Reply
Thread Tools

comparing numbers

 
 
Tweaxor
Guest
Posts: n/a
 
      09-23-2003
I stuck with exerise in a Learning C book that I got. If I have the
numbers as input. How can I determine which of the three is the
smallest number, largest number and the range. Or would it be simpler
to just find the range of the three numbers.

Thanks in advance
 
Reply With Quote
 
 
 
 
Steve Zimmerman
Guest
Posts: n/a
 
      09-23-2003
Tweaxor wrote:

> I stuck with exerise in a Learning C book that I got. If I have the
> numbers as input. How can I determine which of the three is the
> smallest number, largest number and the range. Or would it be simpler
> to just find the range of the three numbers.
>
> Thanks in advance
>


#include <stdio.h>

int min(int num1, int num2);
int max(int num1, int num2);

int main()
{
int int1, int2, int3;

printf("Enter three integers, separated by spaces: ");
scanf("%d%d%d", &int1, &int2, &int3);

printf("The minimum is %d\n", min (int1, (min (int2, int3))));
printf("The maximum is %d\n", max (int1, (max (int2, int3))));

printf("The range is %d\n", max (int1, (max (int2, int3)))
- min (int1, (min (int2, int3))));

return 0;
}

int min(int num1, int num2)
{
if (num1 < num2)
return num1;
else
return num2;
}

int max(int num1, int num2)
{
if (num1 > num2)
return num1;
else
return num2;
}

 
Reply With Quote
 
 
 
 
Richard Heathfield
Guest
Posts: n/a
 
      09-23-2003
Steve Zimmerman wrote:

> Tweaxor wrote:
>
>> I stuck with exerise in a Learning C book that I got. If I have the
>> numbers as input. How can I determine which of the three is the
>> smallest number, largest number and the range. Or would it be simpler
>> to just find the range of the three numbers.
>>
>> Thanks in advance
>>


Homework solution snipped. Are you going to do this guy's day-job for him
too if he ever graduates?

> printf("The range is %d\n", max (int1, (max (int2, int3)))
> - min (int1, (min (int2, int3))));


Sloppy, but not sloppy enough to get the guy a low mark if that's what you
had in mind.

OP: now that Mr Zimmerman has trashed any value that might have remained in
your homework assignment, see if you can work out ON YOUR OWN why the above
printf assumes too much.

--
Richard Heathfield : http://www.velocityreviews.com/forums/(E-Mail Removed)
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
 
Reply With Quote
 
Mark McIntyre
Guest
Posts: n/a
 
      09-23-2003
On Tue, 23 Sep 2003 07:00:46 +0000 (UTC), in comp.lang.c , Richard
Heathfield <(E-Mail Removed)> wrote:

>Homework solution snipped. Are you going to do this guy's day-job for him
>too if he ever graduates?


As long as I also get his pay cheque...

--
Mark McIntyre
CLC FAQ <http://www.eskimo.com/~scs/C-faq/top.html>
CLC readme: <http://www.angelfire.com/ms3/bchambless0/welcome_to_clc.html>
 
Reply With Quote
 
Mike Wahler
Guest
Posts: n/a
 
      09-25-2003
"Tweaxor" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> I stuck with exerise in a Learning C book that I got. If I have the
> numbers as input. How can I determine which of the three is the
> smallest number, largest number


Use the comparison operators: '<' means 'less than',
'>' means 'greater than.

if(a < b)
printf("%d is less than %d\n", a, b);

>and the range. Or would it be simpler
> to just find the range of the three numbers.


Not sure what you mean by 'range'. The range of
numbers between the highest and lowest consists
of all values between them (and including them if
your definition of 'range' means 'inclusive').

The range of possible values for a given numeric
type can be obtained from a macro of <limits.h>:

printf("Range of type 'int' is from %d to %d inclusive.\n",
INT_MIN, INT_MAX);

-Mike


 
Reply With Quote
 
Christopher Benson-Manica
Guest
Posts: n/a
 
      09-25-2003
Richard Heathfield <(E-Mail Removed)> spoke thus:

>> printf("The range is %d\n", max (int1, (max (int2, int3)))
>> - min (int1, (min (int2, int3))));


> OP: now that Mr Zimmerman has trashed any value that might have remained in
> your homework assignment, see if you can work out ON YOUR OWN why the above
> printf assumes too much.


I'm having a tough time figuring out what it assumes that's inadvisable. max
and min always return integers, so the program will never crash. And as far
as I can tell, it always produces correct results... so help me out here...

--
Christopher Benson-Manica | Jumonji giri, for honour.
ataru(at)cyberspace.org |
 
Reply With Quote
 
Mike Wahler
Guest
Posts: n/a
 
      09-26-2003
"Christopher Benson-Manica" <(E-Mail Removed)> wrote in message
news:bkv4bb$pvl$(E-Mail Removed)...
> Richard Heathfield <(E-Mail Removed)> spoke thus:
>
> >> printf("The range is %d\n", max (int1, (max (int2, int3)))
> >> - min (int1, (min (int2, int3))));

>
> > OP: now that Mr Zimmerman has trashed any value that might have remained

in
> > your homework assignment, see if you can work out ON YOUR OWN why the

above
> > printf assumes too much.

>
> I'm having a tough time figuring out what it assumes that's inadvisable.

max
> and min always return integers, so the program will never crash.


It might not crash (actually nobody said it would, but it could),
but will it always give accurate results even when 'int1', 'int2'
and 'int3' each have a valid value? What output do you get from
the following (at the risk of further annoying Richard ) :

[compile with implementation where sizeof(int) >= 4]

#include <limits.h>
#include <stdio.h>

int min(int lhs, int rhs)
{
return lhs < rhs ? lhs : rhs;
}

int max(int lhs, int rhs)
{
return lhs > rhs ? lhs : rhs;
}

int main()
{

int int1 = 500000000;
int int2 = -1000000000;
int int3 = -2000000000;

double dmin = int3; /* used below */
double dmax = int1; /* " " */

printf("INT_MIN == %11d\n", INT_MIN);
printf("INT_MAX == %11d\n", INT_MAX);

printf("int1 == %11d\n"
"int2 == %11d\n"
"int3 == %11d\n",
int1, int2, int3);

printf("max(%11d, (max(%11d, %11d))) == %11d\n"
"min(%11d, (min(%11d, %11d))) == %11d\n",
int1, int2, int3, max(int1, (max(int2, int3))),
int1, int2, int3, min(int1, (min(int2, int3))));

printf("The range is %11d\n", max (int1, (max (int2, int3)))
- min (int1, (min (int2, int3))));


printf("%.0f - %.0f == %.0f\n", dmax, dmin, dmax - dmin);
return 0;
}

-Mike


.. And as far
> as I can tell,


How far did you test?

>it always produces correct results...


Not *always*.

>so help me out here...


See above.

-Mike


 
Reply With Quote
 
Christopher Benson-Manica
Guest
Posts: n/a
 
      09-26-2003
Mike Wahler <(E-Mail Removed)> spoke thus:

> How far did you test?


Okay, I didn't Boy, that was more subtle than I thought, but I probably
still should have seen it... *sheepish*

> Not *always*.


Just put in the documentation not to use MAX_INT

--
Christopher Benson-Manica | Jumonji giri, for honour.
ataru(at)cyberspace.org |
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
comparing floating point numbers Adam Majewski C++ 12 02-13-2012 01:59 AM
Comparing two long numbers ruds Java 35 06-04-2008 04:35 PM
Trouble in comparing exponential numbers. ruds Java 3 06-12-2007 02:44 PM
Comparing floating point numbers nw C++ 14 05-02-2007 02:47 PM
Comparing two numbers purifier C Programming 79 01-24-2005 04:06 AM



Advertisments