【发布时间】:2015-03-08 04:17:36
【问题描述】:
对于 ti-84 程序,我使用二次方程并将加号的根存储为 N,将负号的根存储为 R。然后我只想使用正根作为其余部分的值程序(如果两者都是正面的没关系,我只想检查一个是正面的),所以我做了如下:
If N>0 --> U
ElseR-->U
但它没有用。是否不能在 if-else 语句中使用 store 作为命令?还是有另一种方法只选择正变量并将其存储为 U?
【问题讨论】:
标签: ti-basic
对于 ti-84 程序,我使用二次方程并将加号的根存储为 N,将负号的根存储为 R。然后我只想使用正根作为其余部分的值程序(如果两者都是正面的没关系,我只想检查一个是正面的),所以我做了如下:
If N>0 --> U
ElseR-->U
但它没有用。是否不能在 if-else 语句中使用 store 作为命令?还是有另一种方法只选择正变量并将其存储为 U?
【问题讨论】:
标签: ti-basic
好的,听着。 Blazo 的回答是错误的。每个具有 Else 的 If 语句也需要 Then 和 End。这是在没有分段表达式的情况下编写它的正确方法(但是,分段表达式通常是最好的方法,所以我建议您也查看 dohaqatar 的答案):
If N>0
Then
N->U
Else
R->U
End
使用两个单独的 If,您可以将代码的大小减少 1 个字节到 17 个字节:
If N>0
N->U
If N<=0
R->U
你可以进一步压缩它,多节省 5 个字节变成 12 个字节:
R->U
If N>0
N->U
你也可以使用分段表达式比如dohaqatar的下面,也是12个字节:
N<0:RAns+Nnot(Ans->U
最好的部分是,算法更改将代码大小减少到 6 个字节:
max(R,N->U
【讨论】:
这可以通过您的标准If、Else 语句很容易地完成;但是,更快的方法是通过piece-wise functions。在 TI-Basic 中,每个布尔表达式的计算结果为 1 或 0,分别表示真和假。可以利用这一事实来使某些条件表达式更短。
您的代码使用标准 If Else 语法:
If N>0
Then
N→U
Else
R→U
End
此选项长 18 个字节。
使用分段表达式,您的代码可以压缩成这样:
N<0:RAns+Nnot(Ans→U
导致一行代码只有 12 个字节长。
【讨论】:
max(R,N->U 可能会更好:D 但我喜欢你的分段表达式。
max( 的聪明解决方案。我注意到它的另一个好处是不会对复数抛出错误。