Middle three digits: Difference between revisions

Content added Content deleted
No edit summary
Line 804: Line 804:
No middle three
No middle three
</pre>
</pre>

=={{header|UNIX Shell}}==
{{works with|Bourne Again Shell}}
<lang bash>function middle3digits
{
local -i n="${1#-}"
local -i l=${#n}
if (( l < 3 )); then
echo "$0: $1 has less than 3 digits" 1>&2
return 1
elif (( l % 2 == 0 )); then
echo "$0: $1 has an even number of digits" 1>&2
return 1
else
echo ${n:$((l/2-1)):3}
return 0
fi
}

# test
testdata=(123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345 1 2 -1
-10 2002 -2002 0)
for n in ${testdata[@]}; do
printf "%10d: " $n
middle3digits "$n"
done</lang>

Output: <pre> 123: 123
12345: 234
1234567: 345
987654321: 654
10001: 000
-10001: 000
-123: 123
-100: 100
100: 100
-12345: 234
1: ./mid3: 1 has less than 3 digits
2: ./mid3: 2 has less than 3 digits
-1: ./mid3: -1 has less than 3 digits
-10: ./mid3: -10 has less than 3 digits
2002: ./mid3: 2002 has an even number of digits
-2002: ./mid3: -2002 has an even number of digits
0: ./mid3: 0 has less than 3 digits</pre>



=={{header|Vedit macro language}}==
=={{header|Vedit macro language}}==