Count in octal: Difference between revisions
Content added Content deleted
(Added Crystal) |
(Added Algol W) |
||
Line 177: | Line 177: | ||
8r00000000020 |
8r00000000020 |
||
8r00000000021 |
8r00000000021 |
||
</pre> |
|||
=={{header|ALGOL W}}== |
|||
Algol W has built-in hexadecimal and decimal output, this implements octal output. |
|||
<lang algolw>begin |
|||
string(12) r; |
|||
string(8) octDigits; |
|||
integer number; |
|||
octDigits := "01234567"; |
|||
number := -1; |
|||
while number < MAXINTEGER do begin |
|||
integer v, cPos; |
|||
number := number + 1; |
|||
v := number; |
|||
% build a string of octal digits in r, representing number % |
|||
% Algol W uses 32 bit integers, so r should be big enough % |
|||
% the most significant digit is on the right % |
|||
cPos := 0; |
|||
while begin |
|||
r( cPos // 1 ) := octDigits( v rem 8 // 1 ); |
|||
v := v div 8; |
|||
( v > 0 ) |
|||
end do begin |
|||
cPos := cPos + 1 |
|||
end for_cPos; |
|||
% show first digit on a newline % |
|||
write( r( cPos // 1 ) ); |
|||
% continue the line with the remaining digits (if any) % |
|||
for c := cPos - 1 step -1 until 0 do writeon( r( c // 1 ) ) |
|||
end while_r_lt_MAXINTEGER |
|||
end.</lang> |
|||
{{out}} |
|||
<pre> |
|||
0 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
10 |
|||
11 |
|||
12 |
|||
... |
|||
</pre> |
</pre> |
||