Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Reading a programming book

  1. Nov 17, 2004 #1
    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. jcsd
  3. Nov 17, 2004 #2
    sorry for the ambiguous title
  4. Nov 18, 2004 #3

    matt grime

    User Avatar
    Science Advisor
    Homework Helper

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

    solve for an easier answer
  5. Nov 18, 2004 #4
    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.
  6. Nov 18, 2004 #5
    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
  7. Nov 24, 2004 #6
    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.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook