0
; defining the procedure char_toupper to convert a lower case character to upper case
(define char_toupper (lambda (myChar)
                       ; defining x as the ASCII value of myChar
                       (define x (char->integer myChar))
                       ; defining y as x-32
                       (define y (- x 32))
                       ; if statement for while x is less than 91 (already uppercase)
                       (if (< x 91)
                            ; if it is already uppercase, just display it
                            (display myChar)
                            ; otherwise, if x is greater than 96 (lowercase)
                            (if (> x 96)
                                ; then display the character equivalent to the ASCII value given by y
                                (display (integer->char y))))))

(define string_toupper (lambda (myString newString i)       
                         (if (< i (string-length myString))
                             (string_toupper myString (string-append newString (char_toupper (string-ref myString i))) (+ 1 i)))

                         (display newString)))
(string_toupper (read) "" 0)

各文字を大文字に変換して表示します。しかし、私はエラーを受け取り続け、それを見つけることができます。どんな助けでも。ありがとう

4

1 に答える 1

2

Racket では、片腕の場合ではwhenなく、書く必要があります。if

つまりif、次の式の を に変更しwhenます。

(if (> x 96)
    ; then display the character equivalent to the ASCII value given by y
    (display (integer->char y)))

string-upcaseが組み込まれていることにも注意してください。

于 2012-11-10T22:43:26.367 に答える