【问题标题】:Factoring program (TI-84 plus)保理计划(TI-84 plus)
【发布时间】:2014-05-13 02:13:09
【问题描述】:

我的程序,今天只是学习如何编写计算器,并没有给我任何回应,而是 “完成”

    PROGRAM:FACTORS
    :ClrHome
    :Input "A=", A
    :Input "B=", B
    :Input "C=", C
    :For(D,1,100,1)
    :For(E,1,100,1)
    :If (D*E)=C and (D+E)=B
    :Stop
    :End:End:End
    :Disp D
    :Disp E

【问题讨论】:

    标签: ti-basic


    【解决方案1】:

    两个问题:

    1: 所有的 ":end" 都在同一行。为每一个做一个不同的

    2:这可能是最大的问题:“停止”命令。 “停止”用于完全结束程序,并返回正常功能。我假设你想要做的是让它停止循环一次 D*E=C 和一次 D+E=B。在这种情况下,您可以做以下两件事之一:将突破代码写入重复循环;比如

    :ClrHome
    :Input "A=", A
    :Input "B=", B
    :Input "C=", C
    :For(D,1,100,1)
    :For(E,1,100,1)
    :Repeat (D*E)=C and (D+E)=B
    :End
    :End
    :End
    :Disp D
    :Disp E
    

    或者,您可以使用 Goto 命令

    :If (D*E)=C and (D+E)=B
    :Goto Lbl A
    

    在代码的更下方,您可以将“Lbl A”放在您希望它显示变量的位置

    【讨论】:

    • 问题 1 不是真正的问题。因为Ends 是用冒号分隔的,所以就好像它们都在自己的行上一样。这只是一个偏好问题。此外,如果您在 Goto 命令后面使用 Lbl 关键字,则该命令会给您一个错误。您只应该使用标签名称跟随它,只需 Goto A。
    【解决方案2】:

    您遇到的问题是 stop 完全结束程序,而不是仅仅中断循环。要解决此问题,您可以使用重复循环代替或使用 For 循环:

    :1→D
    :Repeat (D*E=C and D+E=B) or D=100
    ::1→E
    ::Repeat (D*E=C and D+E=B) or E=100
    :::E+1→E
    ::End
    ::1+D→D
    :End
    

    您可以忽略多余的冒号,它们只是为了清晰起见,但如果您留下它们,代码仍然可以工作,因为它们的功能与换行符相同。

    当满足D*E=C and D+E=B 条件时,重复循环将自行中断,但您必须自己处理变量E 和D 的初始化和递增。

    另外请注意,如果 A 不等于 1,您的因式分解算法可能会失败。考虑将B 和C 除以A,然后将A 作为常数因子输出。

    您的代码的另一个错误是您有太多 End 语句,但修复此问题不会修复程序,它仍会在 Stop 处退出。没有Then 的If 不需要End,但如果条件为真,则只会运行一行。例如:

    :If <condition>
    :<one statement>
    

    或

    :If <condition>
    :Then
    :<statement 1>
    :<statement 2>
    :<statement ...>
    :<statement n>
    :End
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多