引数に指定した数字和(数値の各桁を足した結果)を返します。正の整数以外を指定した場合は、エラー値を返します。
- 構文
- Integer = digitSum( num )
- 引数
- num
- 数値(正の整数)
- 戻値
- 各桁の数値の和
プログラム
//////////////////////////////////////////////////
// 【引数】
// num : 数値(正の整数)
// 【戻値】
// 各桁の数値の和
//////////////////////////////////////////////////
FUNCTION digitSum(num)
DIM res = 0
IFB VARTYPE(ABS(num, VAR_DWORD)) = num THEN // 正の整数ならば
FOR n = 1 TO LENGTH(num)
res = res + VAL(COPY(num, n, 1))
NEXT
ELSE
res = ERR_VALUE
ENDIF
RESULT = res
FEND
プログラム実行例
各桁の和を求める
458の各桁の和(=4+5+8)を求める。
PRINT digitSum(458)
//////////////////////////////////////////////////
// 【引数】
// num : 数値(正の整数)
// 【戻値】
// 各桁の数値の和
//////////////////////////////////////////////////
FUNCTION digitSum(num)
DIM res = 0
IFB VARTYPE(ABS(num, VAR_DWORD)) = num THEN // 正の整数ならば
FOR n = 1 TO LENGTH(num)
res = res + VAL(COPY(num, n, 1))
NEXT
ELSE
res = ERR_VALUE
ENDIF
RESULT = res
FEND
- 結果
- 17
ソウルナンバーを求める
桁が一桁になるか、ゾロ目になるまで各桁を足し続ける。
生年月日をyyyymmddの形式で指定する。
DIM n = 20000501
REPEAT
n = digitSum(n)
UNTIL LENGTH(n) = 1 OR COPY(n, 1, 1) = COPY(n, 2, 1)
PRINT n
//////////////////////////////////////////////////
// 【引数】
// num : 数値(正の整数)
// 【戻値】
// 各桁の数値の和
//////////////////////////////////////////////////
FUNCTION digitSum(num)
DIM res = 0
IFB VARTYPE(ABS(num, VAR_DWORD)) = num THEN // 正の整数ならば
FOR n = 1 TO LENGTH(num)
res = res + VAL(COPY(num, n, 1))
NEXT
ELSE
res = ERR_VALUE
ENDIF
RESULT = res
FEND
- 結果
- 8
この記事は役に立ちましたか?