shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Calculando equação do 2 grau


From: Julio C. Neves
Subject: Re: [shell-script] Calculando equação do 2 grau
Date: Wed, 28 May 2014 18:27:13 -0300

Se tiver algum erro avise. Não testei e não uso sqrt há um bom tempo.

read -p "A equação do 2º grau é da forma
ax2 + bx + c. Informe o valor de a: " a
read -p "Informe b: " b
read -p "Informe c: " c
let Delta=b**2-4*a*c
((Delta < 0)) && {
    echo Valores inválidos. Não posso extrair raiz quadrada de número negativo >&2
    exit 1
    }
a1=$(bc <<< "scale=2; ($b*-1+sqrt($Delta))/2*$a")
a2=$(bc <<< "scale=2; ($b*-1-sqrt($Delta))/2*$a")
echo -e "a1=$a1\na2=$a2"

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 02 a 06/06
São Paulo 4Linux 21 a 25/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.



Em 28 de maio de 2014 17:42, Cláudio Caldas address@hidden [shell-script] <address@hidden> escreveu:
 

Oi!
Desculpem-me pela pelas questões banais...
Consegui escrever o código em C e funcionou direito.
Já no shell script...
Segue o código.


#!/bin/bash

echo " "
echo "|--------Cálculo de uma equação do 2º grau--------|"
echo " "

echo "Digite o termo A da equação de 2º grau : " 
read a
echo "Digite o termo B da equação de 2º grau : "
read b
echo "Digite o termo C da equação de 2º grau : "
read c
echo " "


if [ $a = 0 ] ; then 

echo "O elemento a não pode ser zero!!!"
echo " "

exit

else
echo "O valor de delta é: `bc<<<"scale=2;($b ^ 2) - 4 * ($a * $c)"`"
echo " "

fi


echo "Insira o valor de delta: "
read delta


if [ $delta = 0 ] ; then 
            
echo "O valor de x é: `bc<<<"scale=2;- $b / (2 * $a)"`"
echo " "

else 
if [ $delta > 0 ] ; then 
echo "O valor de x1 é: `bc<<<"scale=2;(- $b + sqrt($delta)) / (2 * $a)"`"
echo "O valor de x2 é: `bc<<<"scale=2;(- $b - sqrt($delta)) / (2 * $a)"`"
echo " "

else
echo "Não existe raiz real."
echo " "
fi
             
fi

Quando o delta é negativo, dois tipos de erro são gerados.
O primeiro, quando junto o sinal para o valor negativo na entrada de dados:

|--------Cálculo de uma equação do 2º grau--------|
 
Digite o termo A da equação de 2º grau : 
-6
Digite o termo B da equação de 2º grau : 
-6
Digite o termo C da equação de 2º grau : 
-6
 
O valor de delta é: -108
 
Insira o valor de delta: 
-108
Runtime error (func=(main), adr=19): Square root of a negative number
O valor de x1 é: 
Runtime error (func=(main), adr=19): Square root of a negative number
O valor de x2 é: 

O segundo, afastando o sinal de negativo...

|--------Cálculo de uma equação do 2º grau--------|
 
Digite o termo A da equação de 2º grau : 
-6
Digite o termo B da equação de 2º grau : 
-6
Digite o termo C da equação de 2º grau : 
-6

O valor de delta é: -108
 
Insira o valor de delta: 
- 108
../Eq_2G_Delta.sh: linha 36: [: número excessivo de argumentos
../Eq_2G_Delta.sh: linha 45: [: -: esperado operador unário
Não existe raiz real.

Alguém poderia  ajudar? Já revisei o código e não consigo achar o erro... 

Uma outra pergunta, se permitirem...
Como gero uma variável a partir da entrada do valor de delta?

Desde já agradeço.

Att.
-- 
Cláudio Caldas
(21)98351-7523



reply via email to

[Prev in Thread] Current Thread [Next in Thread]