乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 76|回复: 10

[编程交流] Lisp编程转换

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 23:52:59 | 显示全部楼层 |阅读模式
早上好
 
我再次需要一个lisp程序的帮助,以将摄氏度转换为华氏度,反之亦然,这些将需要在一个文件中的两个单独的程序中。以下是我需要的输入和输出:
 
输入:以摄氏度为单位输入温度:x
 
输出:x.x摄氏度等于xx。x华氏度。
 
第二个程序将简单地翻转:
 
输入:输入华氏温度:x
 
输出:xx。x华氏度相当于x.x摄氏度。
 
需要的算法是:C=5/9(F-32)
F=(9/5)+32
 
到目前为止,我已经将摄氏度设置为C,摄氏度到F的公式由C2F表示:
 
  1. (defun C:CONV-TEMP ( / )
  2. ;; Celsius to Fahrenheit
  3. (setq C (getreal "\nEnter
  4. temperature in Celsius: ")
  5. )
  6. (setq C2F (+ (* (/ 9 5) C) 32)
  7. )
  8. (textscr)
  9. (prompt (strcat (rtos F 2 1) "\ndegrees Celsius is equivalent to"
  10. (rtos C2F 2 1) "degrees Fahrenheit."))
  11. ;;Fahrenheit to Celsius
  12. (setq F (getreal "\nEnter
  13. temperature in Fahrenheit: ")
  14. )
  15. (setq F2C (* (- F 32) (/ 5 9))
  16. )
  17. (textscr)
  18. (prompt (strcat (rtos C 2 1) "\ndegrees Fahrenheit
  19. equivalent to" (rtos F2C 2 1) "degrees Celsius."))
  20. );eop

 
谢谢你的帮助/指导。
Acadstudent学生
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:01:41 | 显示全部楼层
请查找INITGET和GETKWORD函数。
 
此外,对于用户输入,是验证其有效性的良好编程实践:
  1. (if ([i]getsomething[/i])
  2. (progn
  3. ;your processing
  4. )
  5. )
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 00:07:32 | 显示全部楼层
我收到的输入列表格式不正确,但在调试之前,这是你的建议吗?
 
  1. (defun C:CONV-TEMP ( / )
  2. ;; Celsius to Fahrenheit
  3. (initget 1 "Yes No")
  4. (if (="Yes" (getkword "\nConvert
  5. Celsius to Fahrenheit? [Yes/No]: " ))
  6. (setq C (getint (+ 1 2 "\nEnter temperature in Celsius:
  7. ")
  8. )
  9. (setq C2F (+ (* (/ 9 5) C) 32)
  10. )
  11. (textscr)
  12. (prompt (strcat (rtos F 2 1) "\ndegrees Celsius is equivalent to"
  13. (rtos C2F 2 1) "degrees Fahrenheit."))
  14. ); Close first if statement
  15. (if (="No")
  16. (setq F (getreal "\nEnter temperature in Fahrenheit: ")
  17. )
  18. (setq F2C (* (- F 32) (/ 5 9))
  19. )
  20. (textscr)
  21. (prompt (strcat (rtos C 2 1) "\ndegrees Fahrenheit
  22. equivalent to" (rtos F2C 2 1) "degrees Celsius."))
  23. (princ)
  24. )
  25. );close second if statement
  26. );eop
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:15:55 | 显示全部楼层
这意味着你有一些不平衡的法兰西斯-请更加注意代码格式,以便能够自己注意到这些问题。
我已经修复了你的代码;请将其与您的进行比较,以了解我的更改(因为我没有对它们全部发表评论)。
  1. (defun C:CONV-TEMP( / [color=red]C C2F F F2C[/color] )   [color=red];localize variables[/color]
  2. (initget 1 "Yes No")
  3. (if (= "Yes" (getkword "\nConvert Celsius to Fahrenheit? [Yes/No]: " ))
  4. [color=red](progn [/color]
  5. ;;  Celsius to Fahrenheit
  6.   (setq C (getint "\nEnter temperature in Celsius: "))   [color=red];why constrain to integer?!?[/color]
  7.   (setq C2F (+ (* (/ 9[color=red].0[/color] 5[color=red].0[/color]) C) 32))                    [color=red];ALWAYS use real values for division[/color]
  8.   (textscr)
  9.   (prompt (strcat [color=red]"\n"[/color] (rtos C 2 1) " degrees Celsius is equivalent to " (rtos C2F 2 1) " degrees Fahrenheit."))   [color=red];spaces!!![/color]
  10. [color=red])[/color]; Close if branch
  11. [color=red](progn[/color]
  12. ;;  Fahrenheit to Celsius
  13.   (setq F (getreal "\nEnter temperature in Fahrenheit: "))
  14.   (setq F2C (* (- F 32) (/ 5[color=red].0[/color] 9[color=red].0[/color])))                    [color=red];ALWAYS use real values for division[/color]
  15.   (textscr)
  16.   (prompt (strcat [color=red]"\n"[/color] (rtos F 2 1) " degrees Fahrenheit equivalent to " (rtos F2C 2 1) " degrees Celsius."))   ;spaces!!!
  17. [color=red])[/color]; Close else branch
  18. )
  19. (princ)
  20. );eop
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-6 00:17:56 | 显示全部楼层
尊敬的学生:,
 
在得到问题的解决方案后,不要重新编辑你的帖子,可能其他人也在关注同一个问题。。。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:27:33 | 显示全部楼层
学生,请不要再这样了!可能还有其他人将从这次(完整的)讨论中学习。或者,当线程引起更有经验的程序员的注意时,您也可以通过获得更好的建议而受益。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 00:31:09 | 显示全部楼层
 
这到底是什么?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:40:48 | 显示全部楼层
同时删除了两段代码摘录。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 00:45:23 | 显示全部楼层
 
哎呀,很抱歉。我没有通读整条线索,我开始认为你是一个读心术的人,就像你在作品中只回答一声“喊叫”那样
回复

使用道具 举报

8

主题

87

帖子

87

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 00:50:09 | 显示全部楼层
我已经恢复了原来的帖子,所以这个帖子又有意义了。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 21:03 , Processed in 0.738712 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表