Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

alguém poderia me dizer o pq do meu código não estar funcionando? obs: tentei juntar os dois projetos para me desafiar

<script> 
  function escreva(frase) { 

      document.write(frase);                    
} 

function calculaImc(x,y) {var imc = peso / (altura* altura);};
   var ano = 2020; 
   var idadep = 44;
   var idadem = 67;
   var idadei = 36;
   var media =(idadep + idadem + idadei)/3;
    imc(85.2,1.90);
    imc(70.3,1.63);
    imc(65.9,1.54);
    escreva ("<h1>olá mundo!</h1> <br> tudo bem?");

   escreva("<br>hoje eu irei calcular a idade e a  media de idade entre três pessoas para mostra minha inteligência >:D<br> paulo nasceu em 1976 ou seja ele tem " + (ano-1976) + " <br> anos mario nasceu em 1953 ou seja ele tem "+(ano - 1953)+"  anos e <br> igor nasceu em 1984 ou seja ele tem "+(ano - 1984)+" <br> a media da idade entre eles é de ");

   escreva (Math.round(media));

   escreva ("<br>legal não é mesmo? agora eu irei fazer o IMC desses 3 amigos vamos lá?");
   escreva ("<br> o IMC do paulo é de"+imc+(Math.round(imc)));
   escreva ("<br> o IMC  do mario é de "+imc);
   escreva (" já o IMC do igor é de "+imc);
</script>
1 resposta
solução!

Ótima ideia de juntar os códigos, assim vai agregando funcionalidades e aprendizado. Mas vamos lá à sua dúvida: o seu código tem mais de um problema para não rodar. Algumas variáveis não declaradas (imc, peso, altura); ou declaradas no escopo local (dentro de uma function - ou seja, só pode ser usada dentro da própria function); a chamada da function imc, que existe com outro nome (o correto seria chamar por calculaImc); a function calcula, mas não retorna o valor calculado (vai ver 'return' nas proximas aulas); mas o principal problema é a lógica utilizada. O código, pelo que entendi o que pretendia, pede para calcular o imc consecutivamente das três pessoas, e no momento de apresentar os resultados, procura utilizar a mesma variável imc, também consecutivamente. Desta forma ele calcularia o primeiro, o segundo e o terceiro, e armazenaria somente o valor do terceiro. E ao apresentar, apresentaria os 3 com o mesmo valor. Sem tentar criar um novo código diferente, mas sim tentando manter aquilo que acho que era sua ideia original, reordenei algumas das suas linhas, e corrigi os problemas funcionais. Dê uma olhada pra ver se era isto que queria fazer.

E não se esqueça da TAG meta.

<meta charset="UTF-8">
<script> 
    function escreva(frase) { 

    document.write(frase);                    
    } 

    function calculaImc(peso, altura) {

      var imc = peso / (altura * altura);
      return imc;
    }

    var imc = 0;
    var ano = 2020;     
    var idadep = 44;
    var idadem = 67;
    var idadei = 36;
    var media = (idadep + idadem + idadei) / 3;

    escreva ("<h1>olá mundo!</h1> <br> tudo bem?");

    escreva("<br>hoje eu irei calcular a idade e a  media de idade entre três pessoas para mostra minha inteligência >:D<br> paulo nasceu em 1976 ou seja ele tem " + (ano - 1976) + " <br> anos mario nasceu em 1953 ou seja ele tem " + (ano - 1953) + "  anos e <br> igor nasceu em 1984 ou seja ele tem "+ (ano - 1984)+" <br> a media da idade entre eles é de ");

    escreva (Math.round(media));

    escreva ("<br>legal não é mesmo? agora eu irei fazer o IMC desses 3 amigos vamos lá?");

    imc = calculaImc(85.2, 1.90);
    escreva ("<br> o IMC do paulo é de " + Math.round(imc));

    imc = calculaImc(70.3, 1.63);
    escreva ("<br> o IMC  do mario é de " + Math.round(imc));

    imc = calculaImc(65.9, 1.54);
    escreva ("<br> já o IMC do igor é de " + Math.round(imc));

</script>