Task

Write a function/procedure/subroutine that is called with an integer value and returns the middle three digits of the integer if possible or a clear indication of an error if this is not possible.

Note: The order of the middle digits should be preserved.

Your function should be tested with the following values; the first line should return valid answers, those of the second line should return clear indications of an error:

123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345
1, 2, -1, -10, 2002, -2002, 0

Show your output on this page.




' FB 1.05.0 Win64
 
Function middleThreeDigits (n As Integer) As String
  If n < 0 Then n = -n
  If n < 100 Then Return ""  '' error code
  If n < 1000 Then Return Str(n)
  If n < 10000 Then Return "" 
  Dim ns As String = Str(n)
  If Len(ns) Mod 2 = 0 Then Return ""  '' need to have an odd number of digits for there to be 3 middle
  Return Mid(ns, Len(ns) \ 2, 3) 
End Function
 
Dim a(1 To 16) As Integer => _
{123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -123451, 2, -1, -10, 2002, -2002, 0}
 
Dim As Integer i
Dim As String result
 
Print "The 3 middle digits of the following numbers are : "
Print
For i = 1 To 16
  result = middleThreeDigits(a(i))
  Print a(i), " => "; 
  If result <> "" Then
    Print result
  Else
    Print "Error: does not have 3 middle digits"
  End If
Next
Print
Print "Press any key to quit"
Sleep