我对条件语句有问题。这段代码似乎做的数学正确,但它应该返回我可以用于输入的导线尺寸的最小尺寸导管。
例如
命令:CCC
进入阶段1或3:1
输入带有#(磅)符号的进料器尺寸(例如:#4/0或#250):进料器:#2
输入带有#(磅)符号的地面尺寸(例如:#4/0或#250):地面:#6
结果:
导线面积0.5238<0.8200,使用1”导管。
对于0.5238的线面积,数学是正确的,但条件语句返回<0.8200(对于1-1/2”导管),并告诉我使用1”导管(应该是1-1/4”导管,因为1”导管的线面积大于0.3400,但对于1-1/4”导管小于0.6000)。
我将结果语句放在一个条件短语中,我认为应该评估第一个正确(真实)的响应,而忽略所有其他响应。我不理解为什么在true语句之前从条件语句中获取文本,然后在true语句之后从条件语句中获取导管面积值。
希望这个描述有意义。也许代码可以更好地说明这一点。请让我知道我是如何搞错这段代码的。谢谢
- (defun c:ccc (/ phse num fs gs wireArea cc)
- (setq cc nil)
- (setq
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- (setq c0.5 0.1200
- c0.75 0.2100
- c1 0.3400
- c1.25 0.6000
- c1.5 0.8200
- c2 1.340
- c2.5 1.920
- c3 2.950
- c3.5 3.960
- c4 5.090
- c5 8.000
- )
- ;;; start program
- (setq phse (getint "\nEnter phase 1 or 3: "))
- (if (= phse 1)
- (setq num 3)
- ;;else
- (setq num 4)
- )
- (setq fs (getstring "\nEnter feeder size with # (pound) sign (ex:#4/0 or #250): Feeder: "))
- (setq gs (getstring "\nEnter ground size with # (pound) sign (ex:#4/0 or #250): Ground: "))
- (if (or (= gs "")(= gs nil))
- (setq gs nil)
- )
- (if gs
- (setq wireArea (+ (* num (eval (read fs))) (eval (read gs))))
- ;;else
- (setq wireArea (* num (eval (read fs))))
- )
- (cond ((< wireArea c0.5)
- (setq cc c0.5)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 1/2" conduit."
- )
- )
- )
- ((< c0.5 wireArea c0.75)
- (setq cc c0.75)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 3/4" conduit."
- )
- )
- )
- ((< c0.75 wireArea c1)
- (setq cc c1)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 1" conduit."
- )
- )
- )
- ((< c1 wireArea c1.25)
- (setq cc c1.25)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 1-1/4" conduit."
- )
- )
- )
- ((< c1.25 wireArea c1.5)
- (setq cc c1.5)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 1-1/2" conduit."
- )
- )
- )
- ((< c1.5 wireArea c2)
- (setq cc c2)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 2" conduit."
- )
- )
- )
- ((< c2 wireArea c2.5)
- (setq cc c2.5)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 2-1/2" conduit."
- )
- )
- )
- ((< c2.5 wireArea c3)
- (setq cc c3)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 3" conduit."
- )
- )
- )
- ((< c3 wireArea c3.5)
- (setq cc c3.5)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 3-1/2" conduit."
- )
- )
- )
- ((< c3.5 wireArea c4)
- (setq cc c4)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 4" conduit."
- )
- )
- )
- ((< c4 wireArea c5)
- (setq cc c5)
- (princ (strcat "\nWire area "
- (rtos wireArea 2 4)
- " is < "
- (rtos cc 2 4)
- ", use 5" conduit."
- )
- )
- )
- (t nil)
- )
- (princ)
- ) ;end defun ccc
|