【问题标题】:Why my Racket program does not give me any output?为什么我的球拍程序没有给我任何输出?
【发布时间】:2022-01-11 05:03:17
【问题描述】:

我编写了这段代码来转换测量值。但是,当我使用命令 (fce cm mm 5) 运行它时,我没有看到任何输出和任何错误。

 #lang racket
    (define eq equal?)
    (define (fce jednotka jednotka2 cislo)
    (cond
    ((eq jednotka "mm") (mm cislo jednotka2))
    ((eq jednotka "cm") (cm cislo jednotka2))
    ((eq jednotka "m") (m cislo jednotka2))
    ((eq jednotka "km") (km cislo jednotka2))))
    (define (mm c j)
    (cond
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))
    
    (define (cm c j)
    (cond
    ((eq j "mm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))
    
    (define (m c j)
    (cond
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "mm") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))
    
    (define (km c j)
    (cond
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))

【问题讨论】:

  • 分别测试一些条件,看看会发生什么,例如(eq cm "cm")。并将else 子句添加到您的conds。

标签: function scheme racket


【解决方案1】:

您忘记引用字符串,而您正在比较过程。你应该这样做:

(fce "cm" "mm" 5)

不过,逻辑看起来不正确。以上打印:

"5 mm = 0.5 mm"

您需要在每个帮助程序中计算出正确的转换和显示的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多