I am scratching my head again :-)
I have two numbers, X and Y, and know that X is greater than Y. I have a third number NUM that I know is somewhere between X and Y (it could also equal X or Y).
What is the best way of seeing which of the two numbers X and Y NUM is nearest to?
difference=(X-NUM-Y)
If difference>(X-Y/2) then Print "Closer to Y"
If difference<=(X-Y/2) then Print "Closer to X"
(I think - bit tired)
Try it first :) I cannot test it as I am at work right now!
Hi Malice,
it doesn't quite work I think. I put together a simple test programme as follows:
While Not KeyHit(57)
X=Input("What is the high number?")
Y=Input("What is the low number?")
NUM=Input("what is the middle number?")
difference=(X-NUM-Y)
If difference>(X-Y/2) Then Print NUM+" is closer to "+Y+" than "+X
If difference<=(X-Y/2) Then Print NUM+" is closer to "+X+" than "+Y
Print ""
Print ""
Print ""
Wend
and it tends to default to the bigger number.
Okay - sorry got them wrong way round...
Also added the equals part!
While Not KeyHit(57)
X=Input("What is the high number?")
Y=Input("What is the low number?")
NUM=Input("what is the middle number?")
difference=(X-NUM-Y)
If difference>(Y-X/2) Then Print NUM+" is closer to "+Y+" than "+X
If difference<(Y-X/2) Then Print NUM+" is closer to "+X+" than "+Y
If difference=(Y-X/2) Then Print NUM+" is exactly between "+X+" and "+Y
Print ""
Print ""
Print ""
Wend
Oh and it breaks if :
X-Y=1
and
NUM=Y
Isn't it just...
While Not KeyHit(1)
x=Input("High Number ")
y=Input("Low Number ")
num=Input("Middle Number ")
If (x-num<num-y) Then Print "X is nearer"
If (x-num>num-y) Then Print "Y is nearer"
If (x-num=num-y) Then Print "They are both as close"
Print
Wend
and use floats if you want it to not break when x-y=1
This returns the number that 'NUM' is nearest to, or 0 if the difference between each number and NUM is equal:
Function NearestTo(X,Y,NUM)
If Abs(x-num) < Abs(y-num)
Result = X
ElseIf Abs(x-num) > Abs(y-num)
Result = Y
ElseIf Abs(x-num) = Abs(y-num)
Result = 0
EndIf
Return result
End Function
Thanks to both Malice and Shambler. Job done! :-)
A little variation based on finding the midpoint and then seeing which side of it NUM lies on...
While Not KeyHit(57)
X=Input("What is the high number?")
Y=Input("What is the low number?")
NUM=Input("what is the middle number?")
difference=(X-NUM-Y)
midpoint# = (X + Y)/2.0
ComparePosition# = midpoint#-NUM
If ComparePosition<0 Then
Print NUM+" is closer to "+Y+" than "+X
Else
If ComparePosition > 0 Then
Print NUM+" is closer to "+X+" than "+Y
Else
Print NUM+" is exactly between "+X+" and "+Y
EndIf
EndIf
Print ""
Print ""
Print ""
Wend