Middle three digits: Difference between revisions

Content added Content deleted
(Promote to full task from draft.)
(Vedit macro language added)
Line 165: Line 165:
middle_three_digits(0) returned: AssertionError('Need odd and >= 3 digits',)
middle_three_digits(0) returned: AssertionError('Need odd and >= 3 digits',)
>>> </lang>
>>> </lang>

=={{header|Vedit macro language}}==
<lang vedit>do {
#1 = Get_Num("Enter a number, or 0 to stop: ", STATLINE)
Ins_Text("Input: ") Num_Ins(#1, COUNT, 10)
Call("MIDDLE_3_DIGITS")
Ins_Text(" Result: ") Reg_Ins(10) Ins_Newline
Update()
} while (#1);
Return

// Find middle 3 digits of a number
// in: #1 = numeric value
// out: @10 = the result, or error text
//
:MIDDLE_3_DIGITS:
Buf_Switch(Buf_Free)
Num_Ins(abs(#1), LEFT+NOCR) // the input value as string
#2 = Cur_Col-1 // #2 = number of digits
if (#2 < 3) {
Reg_Set(10, "Too few digits!")
} else {
if ((#2 & 1) == 0) {
Reg_Set(10, "Not odd number of digits!")
} else {
Goto_Pos((#2-3)/2)
Reg_Copy_Block(10, Cur_Pos, Cur_Pos+3)
}
}
Buf_Quit(OK)
Return </lang>

Output:
<pre>Input: 123 Result: 123
Input: 12345 Result: 234
Input: 1234567 Result: 345
Input: 987654321 Result: 654
Input: 10001 Result: 000
Input: -10001 Result: 000
Input: -123 Result: 123
Input: -100 Result: 100
Input: 100 Result: 100
Input: -12345 Result: 234
Input: 1 Result: Too few digits!
Input: 2 Result: Too few digits!
Input: -1 Result: Too few digits!
Input: -10 Result: Too few digits!
Input: 2002 Result: Not odd number of digits!
Input: -2002 Result: Not odd number of digits!
Input: 0 Result: Too few digits! </pre>


=={{header|XPL0}}==
=={{header|XPL0}}==