Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
5
respuestas

ayuda con mi codigo

tengo mi codigo pero al momento de ejecutarlo la instruccion if no se ejecuta

function calculodeImc(peso,altura){

    return peso / (altura * altura);

 }

    var nombre = prompt("tu nombre");
    var peso = prompt("idique su peso"); 
    var altura = prompt("indique su altura");

    texto(nombre + " su imc es de " + calculodeImc(peso,altura));


    if (calculodeImc < 18.5 ){
     texto("IMC debajo de lo recomendado");
   }

   if ( calculodeImc > 30) {
     texto("IMC considerado como obesidad ");
   }
5 respuestas

Hola, veo que en tu código hace falta guardar el calculo del imc en una variable, porque al momento de entrar en el if la variable que estas usando calculodeImc no existe, creo que la estas confundiendo en el nombre de la función, ya que veo que tiene el mismo nombre, cuando imprimes el resultado llamas a la función calculodeImc(peso, altura).

Prueba a realizar los siguientes cambios:

  1. Agregar una linea para guardar el resultado del calculo de IMC, en una variable que tenga un nombre diferente, te dejo un ejemplo de la linea que puedes agregar:

    resultadoCalculodeImc = calculodeImc(peso, altura);
  2. Luego la variable resultadocalculodeImc es la que usaras en el if para hacer la validación:

     if (resultadocalculodeImc < 18.5 ){
          texto("IMC debajo de lo recomendado");
     }

Tu código quedaría algo asi:

var nombre = prompt("tu nombre");
var peso = prompt("idique su peso"); 
 var altura = prompt("indique su altura");

//Se agregó esta linea
resultadoCalculodeImc = calculodeImc(peso, altura);

//se modifico ahora se usa la variable resultadoCalculodeImc utilizado en la linea anterior
texto(nombre + " su imc es de " + resultadoCalculodeImc);


if (resultadoCalculodeImc < 18.5 ){
     texto("IMC debajo de lo recomendado");
   }

   if ( resultadoCalculodeImc > 30) {
     texto("IMC considerado como obesidad ");
   }

la declare con el nombre de imc solamente pero al parecer sigue sin funcionar

function calculodeImc(peso,altura){

    return peso / (altura * altura);

 }


    var imc = calculodeImc(peso,altura);
    var nombre = prompt("tu nombre");
    var peso = prompt("idique su peso"); 
    var altura = prompt("indique su altura");

    texto(nombre + " su imc es de " + calculodeImc(peso,altura));


    if (imc < 18.5 ){ 

     texto("IMC debajo de lo recomendado");

   }

   if ( imc > 30) {

     texto("IMC considerado como obesidad ");
   }

Hola, debes agregar la linea de la variabla imc, despues de que se ingresen los valores, recuerda que primero se deben ejecutar las lineas que le solicitan la información al usuario luego ya se puede realizar el calculo, prueba haciendo el siguiente cambio:

return peso / (altura * altura);

 }

    var nombre = prompt("tu nombre");
    var peso = prompt("idique su peso"); 
    var altura = prompt("indique su altura");

    //se paso la variable luego de que se ingresen los valores
    var imc = calculodeImc(peso,altura);

    //ahora puedes hacer uso de tu variable imc tambien para imprimir el resultado
    texto(nombre + " su imc es de " +imc);


    if (imc < 18.5 ){ 

     texto("IMC debajo de lo recomendado");

   }

   if ( imc > 30) {

     texto("IMC considerado como obesidad ");
   }

Hola, no sé si ya hayas solucionado tu problema, pero espero mi código pueda ser de utilidad.

Primero, analicemos tu código:

    return peso / (altura * altura);

 }

Aqui en este caso, me genera confusión, no sé si copiaste mal o solamente una parte de la función calculodeImc, pero te puedo recomendar que no utilices return directamente a una formula, ya que puedes tener errores, es mejor tener una variable y retornar solamente esa variable, por ejemplo:

function calculoDeImc (peso, altura) { //Obtenemos peso y altura al preguntar al usuario

            var imc = peso / (altura * altura); //Creamos una variable nueva, la llamamos imc (puede ser otro nombre, calculo, total, resultado, etc)

            return imc; //retornamos imc, este resultado va a ir a una variable AFUERA de la funcion calculoDeImc
        }

Un consejo aquí, es mejor usar el estilo camel (camello) para el nombre de variables o funciones, ya que facilita la lectura de variables y se evitan confusiones, este estilo funciona usando una mayúscula por cada palabra de una variable, sin contar la del inicio por ejemplo, numeroDeNiños, nombreDelAnimal, afirmacionDelProgreso, etc.

Ahora continuando, el return va a llegar a la variable imcCalculado, ya que es mejor que directamente usar la funcion sobre otras instrucciones.

var imcCalculado = calculoDeImc (peso, altura); // <-- ahora imcCalculado tendrá el valor que nos retornó la función.

Ahora podemos utilizar esta variable para multiples propositos, desde concatenarlo en una frase para saber cual es el IMC que obtuvimos, o para usar las condiciones if statement para que hagan instrucciones especificas.

imprimir( nombre + ", tu IMC calculado es: " + imcCalculado); //recuerda que "nombre" es una variable que se concatena y tambien "imcCalculado", además de que usamos la función imprimir para poder proyectar lo que hacemos en el navegador.

if (imcCalculado < 18.5) { //La condición del if es que la variable imcCalculado debe ser menor a 18.5
            imprimir("IMC abajo de lo recomendado"); // <-- Esta instruccion solo se imprimirá SI la variable imcCalculado es menor a 18.5
        }

Ahora, puede que hayas hecho un error con lo explicado anteriormente, que es el no utilizar una variable en la función y solo retornar esa variable (en este caso es imc de la función calculodeImc, ya que al aplicarlo en el if, lo que haces es solamente poner la función, pero no es una condición, porque no le has puesto datos y por lo tanto dará error ( recomiendo hacer lo que expliqué previamente).

 if (calculodeImc < 18.5 ){ // <-- Tendremos un error porque usamos calculodeImc como variable, pero es una función (y no hay datos para el calculo)
     texto("IMC debajo de lo recomendado"); //por lo tanto no hará esta instrucción
   }

   if ( calculodeImc > 30) { <-- Tendremos un error porque usamos calculodeImc como variable, pero es una función (y no hay datos para el calculo)
     texto("IMC considerado como obesidad "); //por lo tanto no hará esta instrucción
   }

Ya explicado el posible problema, así quedaría el programa:

<script>
        function saltarLinea() { //funcion necesaria para saltos de linea
            document.write("<br>");
            document.write("<br>");
        }

        function imprimir(frase) { //función que imprime lo que escribimos en pantalla
            document.write(frase);
            saltarLinea(); //llamada de la función saltarLinea
        }

        function calcularIMC (peso, altura) { //función para el calculo del IMC

            var imc = peso / (altura * altura); //usamos variables para minimizar errores

            return imc; //retornamos variable
        }

        var nombre = prompt("Informe su nombre: "); 
        var pesoInformado = prompt(nombre + ", informe su peso: ");
        var alturaInformado = prompt(nombre + ", informe su altura: ");

        var imcCalculado = calcularIMC(pesoInformado,alturaInformado); //imcCalculado obtiene el valor de la funcion calcularIMC

        imprimir(nombre + ", tu IMC calculado es: " + imcCalculado);

        if(imcCalculado < 18.5){
            imprimir("IMC abajo de lo recomendado");
        }
        if(imcCalculado >= 30){
            imprimir("IMC considerado como obesidad");
        }
    </script>

Saludos, y espero puedas resolver tu problema :) Aquí dejaré una imagen ilustrativa en VS code

Aquí dejaré una imagen ilustrativa en VS code