Created
December 28, 2011 17:03
-
-
Save yugi386/1528693 to your computer and use it in GitHub Desktop.
RESOLVENDO EQUAÇÕES DO SEGUNDO GRAU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ############################################## | |
| # RESOLVENDO EQUAÇÕES DO SEGUNDO GRAU | |
| # PROGRAMADOR: YUGI | |
| # DATA: 28/12/2011 | |
| ############################################## | |
| =begin | |
| EQUAÇOES DO SEGUNDO GRAU SÃO AQUELAS DADAS PELA FÓRMULA: | |
| ax2 + bx + c = 0 | |
| onde resolvê-las significa obter o valor de x para que o resultado seja igual à zero. | |
| =end | |
| # ================================================================================= | |
| def raiz2(num) # retorna a raiz quadra de um número | |
| if num < 0 | |
| puts "Não há raiz quadrada de número negativo" | |
| exit | |
| end | |
| ret = 0.0 | |
| fator = 1_000_000_000_000_000_000_000_000_000_000.0 | |
| tmp = 0.0 | |
| tmp = num / 2 | |
| while TRUE | |
| if tmp**2 > num | |
| tmp = tmp / 2 | |
| elsif tmp**2 == num | |
| ret = tmp | |
| return ret | |
| else | |
| break | |
| end | |
| end | |
| raiz = 0.0 | |
| fim = 0 | |
| while TRUE | |
| raiz = tmp | |
| if (fator+raiz)**2 == num | |
| tmp = raiz+fator | |
| break | |
| elsif (fator+raiz)**2 < num | |
| tmp = fator + raiz | |
| else | |
| fator = fator / 10 | |
| end | |
| if fator < 0.0000000001 | |
| break | |
| end | |
| end | |
| return tmp | |
| end | |
| # ================================================================================= | |
| def eq2g(a,b,c) | |
| x = y = delta = 0.0 | |
| delta = b**2 -4*a*c | |
| if delta < 0 | |
| puts "A equação não possui solução com números reais" | |
| exit | |
| elsif delta == 0 | |
| puts "A equação possui uma raiz real distinta" | |
| tipo = 1 | |
| else | |
| puts "A equação possui duas raízes reais distintas" | |
| tipo = 2 | |
| end | |
| x = -b + raiz2(delta) | |
| x = x / (2*a) | |
| puts "Primeira Raiz: " + x.to_s | |
| if tipo == 2 | |
| y = -b - raiz2(delta) | |
| y = y / (2*a) | |
| puts "Segunda Raiz: " + y.to_s | |
| end | |
| end | |
| # ======================================================================= | |
| eq2g(3,-7,2) | |
| eq2g(-1,4,-4) | |
| eq2g(5,-6,5) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment