Sum digits of an integer: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Draco) |
Not a robot (talk | contribs) (Add PL/M) |
||
Line 3,365: | Line 3,365: | ||
SD= 5; |
SD= 5; |
||
</pre> |
</pre> |
||
=={{header|PL/M}}== |
|||
<syntaxhighlight lang="plm">100H: |
|||
BDOS: PROCEDURE (F,A); DECLARE F BYTE, A ADDRESS; GO TO 5; END BDOS; |
|||
EXIT: PROCEDURE; GO TO 0; END EXIT; |
|||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT; |
|||
PRINT$NUM: PROCEDURE (N); |
|||
DECLARE S (8) BYTE INITIAL ('.....',13,10,'$'); |
|||
DECLARE (N, P) ADDRESS, C BASED P BYTE; |
|||
P = .S(5); |
|||
DIGIT: |
|||
P = P-1; |
|||
C = N MOD 10 + '0'; |
|||
IF (N := N/10) > 0 THEN GO TO DIGIT; |
|||
CALL PRINT(P); |
|||
END PRINT$NUM; |
|||
DIGIT$SUM: PROCEDURE (N, BASE) BYTE; |
|||
DECLARE N ADDRESS, (BASE, SUM) BYTE; |
|||
SUM = 0; |
|||
DO WHILE N > 0; |
|||
SUM = SUM + N MOD BASE; |
|||
N = N / BASE; |
|||
END; |
|||
RETURN SUM; |
|||
END DIGIT$SUM; |
|||
CALL PRINT$NUM(DIGIT$SUM( 1, 10)); |
|||
CALL PRINT$NUM(DIGIT$SUM( 1234, 10)); |
|||
CALL PRINT$NUM(DIGIT$SUM( 0FEH, 16)); |
|||
CALL PRINT$NUM(DIGIT$SUM(0F0EH, 16)); |
|||
CALL EXIT; |
|||
EOF</syntaxhighlight> |
|||
{{out}} |
|||
<pre>1 |
|||
10 |
|||
29 |
|||
29</pre> |
|||
=={{header|PowerShell}}== |
=={{header|PowerShell}}== |