1. Nov 17, 2004

gerald

i'm reading a programming book and one of the problems it asks me to solve is to write a program that determines the larger and smaller values of two integers that the user inputs. I could not use if statements in the program.

I checked the answer and they had used this expression to come solve it.

long larger = (a*(a/b) + b*(b/a))/(a/b + b/a);
long smaller = (b*(a/b) + a*(b/a))/(a/b + b/a);

i was wondering how they have gone about finding those expressions? i'm not a math whiz so i was wondering if there was something in my mathematics education that was lacking.

2. Nov 17, 2004

gerald

sorry for the ambiguous title

3. Nov 18, 2004

matt grime

max(a,b)+min(a,b) = a+b
max(a,b)-min(a,b)= |a-b|

4. Nov 18, 2004

chronon

No there's nothing in your education that is lacking, it's just that writers of programming books have to show how clever they are by inventing silly tricks. This has several problems:

1) When I tried it with negative numbers it didn't work - it may do if you define division using negative integers in a different way, but not with the program I was using.

2) Suppose that you changed your integers to floating point, and your program had this code in. There would be no obvious reason why it needs changing - but suddenly people start finding mysterious errors when running the program.

5. Nov 18, 2004

gerald

hmm, i should have been more specific. it only wanted positive whole numbers and things ive learned in that chapter. this was a very neat trick.

Last edited: Nov 18, 2004
6. Nov 24, 2004

blip

An 'if' statement doesn't take as much computationally (and works with all number), so I'd never use that method if I were you.