gpt4 book ai didi

cobol - COBOL 中的快乐数字

转载 作者:行者123 更新时间:2023-12-04 08:38:04 25 4
gpt4 key购买 nike

正如标题所暗示的,我正在做一个软件来计算和验证插入的数字是否是一个快乐的数字(或不是)。在 COBOL 语言中(有关什么是快乐数字的引用 https://mathworld.wolfram.com/HappyNumber.html )。
现在,我的代码无法正确计算数字是否快乐(在程序中 HEY = Happy and HOY = not happy :C)
我的问题是,我在代码中做错了什么?我现在需要的是正确检测它是否快乐。欢迎任何帮助。
这是我当前的代码:

IDENTIFICATION DIVISION.
PROGRAM-ID. YOUR-PROGRAM-NAME.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 num PIC 9(36).
01 addc PIC 9(36).
01 rem PIC 9(36).
01 pow PIC 9(36).
01 toast PIC 9.
01 k PIC 999 VALUE 0.
01 l PIC 9(36).
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY"Escribe numero "
ACCEPT num
PERFORM WITH TEST AFTER UNTIL addc = 1
MOVE 0 TO addc
PERFORM WITH TEST AFTER UNTIL num = 0
DIVIDE num BY 10 GIVING num REMAINDER rem
MULTIPLY rem BY rem GIVING pow
MOVE pow TO addc
END-PERFORM

IF addc = 1
MOVE 1 TO toast
ELSE
MOVE addc TO num
ADD 1 TO k
IF k = 20
MOVE 1 TO addc
MOVE 0 TO toast
END-IF
END-IF
END-PERFORM

IF toast = 1
DISPLAY "HEY"
ELSE
DISPLAY "HOY"
END-IF
STOP RUN.
END PROGRAM YOUR-PROGRAM-NAME.
另外,作为一个额外的问题,我如何处理超过 36 的最大限制的数字?不使用 Cobol 中等效的字符串和字符。

最佳答案

线路:

PERFORM UNTIL num > 0
使 PERFORM 循环不进入,如 num很可能大于 0。你想要做的是执行循环,从 num 中获取所有数字直到 num 为 0。
除了,
MOVE pow TO addc
应该
ADD pow TO addc

关于cobol - COBOL 中的快乐数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64701220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com