Pular para o conteúdo

Problema com código de Shell Script [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Problema com código de Shell Script [RESOLVIDO]

Enviado em 15/06/2011 - 15:30h

Olá! Sou novo no mundo do Linux e em Shell Scripting, então decidi instalar uma distro e estudar ambos. Durante um dos exercícios dos vários que encontrei na internet, me reparei com um exercício que me pede que o usuário insira 3 angulos de um triangulo e ele responda se é retângulo (um angulo igual a 90 graus), um obtusangulo (um angulo maior que 90 graus) ou um acutangulo (todos os 3 angulos menores que 90). E o código, ao meu ver, está correto, mas algo na lógica de programação o impede de funcionar corretamente. Se eu determinar que todos os 3 angulos são 60, ele me responde que é um obtusângulo, o que não atende à condição, por isso postarei o código aqui e espero sugestões para resolver o problema.


#!/bin/bash

echo "Ex. 5 Determinar se o triângulo é acutângulo, retângulo ou obtusângulo"

echo "Determine o ângulo alfa."
read alfa
echo
echo "Determine o ângulo beta."
read beta
echo
echo "Determine o ângulo gama."
read gama
echo
echo

if [ $alfa == 90 ] || [ $beta == 90 ] || [ $gama == 90 ]
then
echo
echo "Este triângulo é um triângulo retângulo."
elif [ $alfa > 90 ] || [ $beta > 90 ] || [ $gama > 90 ]
then
echo
echo "Este triângulo é um obtusângulo."
elif [ $alfa < 90 ] && [ $beta < 90 ] && [ $gama < 90 ]
then
echo
echo "Este triângulo é um acutângulo."
fi


PS: Eu sei que não fiz o teste de validação do triangulo (todos os seus angulos internos devem dar 180 na soma), mas não vejo como isso pode influenciar.


Viva o Livre!

Responder tópico

2. Re: Problema com código de Shell Script [RESOLVIDO]

Melhor resposta

Enviado em 15/06/2011 - 16:24h

Boas,

Ao invés de utilizar "<, >, ==", utilize

-eq (igual)
-gt (maior que)
-lt (menor que)


echo "Determine o ângulo alfa."
read alfa
echo
echo "Determine o ângulo beta."
read beta
echo
echo "Determine o ângulo gama."
read gama
echo
echo

if [ $alfa -eq 90 ] || [ $beta -eq 90 ] || [ $gama -eq 90 ]
then
echo
echo "Este triângulo é um triângulo retângulo."
elif [ $alfa -gt 90 ] || [ $beta -gt 90 ] || [ $gama -gt 90 ]
then
echo
echo "Este triângulo é um obtusângulo."
elif [ $alfa -lt 90 ] && [ $beta -lt 90 ] && [ $gama -lt 90 ]
then
echo
echo "Este triângulo é um acutângulo."
fi


De uma olhada aqui no VOL, tem excelentes artigos sobre shell script
Espero que ajude.
[]s

3. Re: Problema com código de Shell Script [RESOLVIDO]

Enviado em 16/06/2011 - 16:43h

O problema é só os "||" mesmo. ele não funciona pra números.

agora pra validar se é triangulo é so usar essa linha antes do teu if e trocar teu if por elif

if [ $((ALFA+BETA+GAMA)) -ne 180 ] ;then ;echo "não é triangulo" ;


4. Re: Problema com código de Shell Script [RESOLVIDO]

Enviado em 20/06/2011 - 10:05h

Muito obrigado pela força. Já está tudo resolvido. Fico feliz de ver que realmente existe uma cooperação enorme na comunidade Linux. É por isso que o Linux está onde está hoje. Abraços a todos!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder