不确定我在这里是否使用了正确的术语,但是出于某种原因,QBasic无法理解"x =y= z“之类的内容。限制在两个人以内。
为了解决这个问题,我这样做了:
IF sum(1) = sum(2) THEN
IF sum(2) = sum(3) THEN
IF sum(3) = sum2(1) THEN
IF sum2(1) = sum2(2) THEN
IF sum2(2) = sum2(3) THEN
IF sum2(3) = sum3 THEN
IF sum3 = sum4 THEN
PRINT "This is a Lo Shu Square, with all sums equaling"; sum(1)
ELSE
PRINT "This is not a Lo Shu Square."
END IF
END IF
END IF
END IF
END IF
END IF
END IF
END当然是有效的,但我感觉有一种更简单的方法来检查所有的和是否相等。有什么建议吗?
发布于 2018-03-30 07:49:40
如果所有的比较都放在一行上,并像这样分开,那么它就会起作用:
REM code to shrink IFTHEN ladder:
IF sum(1) = sum(2) AND sum(2) = sum(3) AND sum(3) = sum2(1) AND sum2(1) = sum2(2) AND sum2(2) = sum2(3) AND sum2(3) = sum3 AND sum3 = sum4 THEN
PRINT "This is a Lo Shu Square, with all sums equaling"; sum(1)
ELSE
PRINT "This is not a Lo Shu Square."
END IF
END发布于 2018-03-31 09:03:22
您还可以将逻辑编码到循环中:
DIM testvals(8)
testvals(0) = sum(1)
testvals(1) = sum(2)
testvals(2) = sum(3)
testvals(3) = sum2(1)
testvals(4) = sum2(2)
testvals(5) = sum2(3)
testvals(6) = sum3
testvals(7) = sum4
DO
FOR i = 1+LBOUND(testvals) TO UBOUND(testvals)
IF testvals(i-1) <> testvals(i) THEN
PRINT "This is not a Lo Shu square."
EXIT DO
END IF
NEXT
PRINT "This is a Lo Shu square, with all sums equaling"; sum(1)
LOOP WHILE 1 = 0这有几个好处:
testvals(8) = value并将代码更改为代码行中的代码可能是有益的。IF-THEN-ELSE语句(其中每个ELSE都是PRINT "This is not a Lo Shu square.") QB64的<另一方面,它也有一些缺点:
在这样的情况下,不使用AND在QB64中是一种不寻常的模式。事实上,这是AND存在的一个很好的原因。
AND组合的测试值,而无需对testvals数组中的项重新编号或更改其dimensions.
IF a AND b AND c AND ... THEN ... END IF块(或者类似于IF-THEN塔以保留短路行为),并将输出粘贴到需要的程序代码中。发布于 2018-03-31 14:43:16
检查数组的一种更简单的方法:
testvals(1) = sum(1)
testvals(2) = sum(2)
testvals(3) = sum(3)
testvals(4) = sum2(1)
testvals(5) = sum2(2)
testvals(6) = sum2(3)
testvals(7) = sum3
testvals(8) = sum4
FOR i = 1 TO 7
IF testvals(i) <> testvals(i + 1) THEN
f = -1
EXIT FOR
END IF
NEXT
IF f THEN
PRINT "This is not a Lo Shu square."
ELSE
PRINT "This is a Lo Shu square, with all sums equaling"; sum(1)
END IFhttps://stackoverflow.com/questions/49549121
复制相似问题