Problema com código de Shell Script [RESOLVIDO]

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

Eric Fellip
EricFellip

(usa FreeBSD)

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!


  


2. MELHOR RESPOSTA

Takahashi
signout

(usa Slackware)

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]

Jônatas Ramiro Goulat
Jonatas_rg

(usa Fedora)

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]

Eric Fellip
EricFellip

(usa FreeBSD)

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!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts