Autor Tópico: Problemas com decimais em Comandos de Decisão  (Lida 4370 vezes)

Offline rickynunes

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Problemas com decimais em Comandos de Decisão
« Online: 06 de Outubro de 2013, 11:54 »
Fala galerinha, então to com outro problema que ta me dando dor de cabeça já!
Tenho que fazer outro exercício, assim, tenho que criar um script que calcule o IMC da pessoa e com Comandos de Decisão informar se ela é magra, tem peso ideal, esta acima do peso ou é obesa.
Beleza, fiz esse script:

#!bin/bash
#Calculo de IMC.
echo "Insira sua altura em metros:"
read h
echo "Insira seu peso em kg:"
read p
imc=$(echo "scale=2; $p/$h^2" | bc)
if [ $imc -le "18.5" ]
then
echo "Seu IMC é $imc, vc esta magro."
elif [ $imc -le 25 ]
then
echo "Seu IMC é $imc, vc esta no peso ideal."
elif [ $ imc -le 30 ]
then
echo "Seu IMC é $imc, vc esta acima do peso."
elif [ $imc -gt 30 ]
then
echo "Seu IMC é $imc, vc esta obeso."
fi

Só que pelo resultado ser em decimais da o erro: "esperado expressão de numero inteiro"
Meu problema é que preciso desse "scale", porque  o IMC precisa ser baseado em decimais, mesmo se não usar o "scale" na condição com o 18.5 da o mesmo problema.

HELP PLX!!

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Problemas com decimais em Comandos de Decisão
« Resposta #1 Online: 06 de Outubro de 2013, 12:51 »
O bc continua sendo uma opção, ele vai retornar 0 pra falso e 1 pra verdadeiro, em comparações, então:

Código: [Selecionar]
if [[ $(bc <<< "$imc < 18.5") -eq 1 ]]; then
  echo "Seu IMC é $imc, vc esta magro."
fi

Obs: use a tag code, pra facilitar a leitura.

Offline rickynunes

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Re: Problemas com decimais em Comandos de Decisão
« Resposta #2 Online: 06 de Outubro de 2013, 23:30 »
O bc continua sendo uma opção, ele vai retornar 0 pra falso e 1 pra verdadeiro, em comparações, então:

Código: [Selecionar]
if [[ $(bc <<< "$imc < 18.5") -eq 1 ]]; then
  echo "Seu IMC é $imc, vc esta magro."
fi

Obs: use a tag code, pra facilitar a leitura.
tem que executar exatamente assim? funcionou não, acho que não fiz direito!

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Problemas com decimais em Comandos de Decisão
« Resposta #3 Online: 06 de Outubro de 2013, 23:51 »
Em essência, sim: vai executar alguma coisa e olhar o retorno. Mas existem várias formas de aplicar, mostre exatamente o que fez, o que aconteceu e o que você esperava no lugar.