es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi programa en Racket no me muestra ninguna salida?

Tengo este código escrito para convertir medidas. Sin embargo, cuando lo ejecuto con el comando (fce cm mm 5), no veo ninguna salida ni ningún error.

 #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))))
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El código proporcionado tiene como objetivo convertir unidades de medida de mm a cm, m o km y viceversa. Sin embargo, al ejecutar el código con el comando (fce cm mm 5), no se muestra ninguna salida ni error, lo que sugiere que algo está mal en la implementación de las funciones.

    Al examinar el código, parece que hay un error en la función mm donde la cadena “mm” debería ser reemplazada por la variable j, que representa la unidad de medida a la que se quiere convertir. El mismo error está presente en las funciones cm, m y km, donde la cadena de salida describe incorrectamente “mm” en lugar de la unidad de medida correcta.

    Para solucionar el problema, las líneas en cada una de las cuatro funciones deben modificarse para usar la variable j en lugar de la cadena codificada “mm”. Por ejemplo, la función km quedaría así:

    (define (km c j)
      (cond
        ((eq j "cm") (format "~a km = ~a ~a" c (* c 1000) j))
        ((eq j "m") (format "~a km = ~a ~a" c (* c 1000) j))
        ((eq j "mm") (format "~a km = ~a ~a" c (* c 1000000) j))))
    

    Con esta modificación, la función ahora debería mostrar correctamente la medida convertida cuando se llama con el comando (fce cm mm 5).

Comments are closed.