Skip to content

Instantly share code, notes, and snippets.

@yugi386
Created December 28, 2011 17:03
Show Gist options
  • Select an option

  • Save yugi386/1528693 to your computer and use it in GitHub Desktop.

Select an option

Save yugi386/1528693 to your computer and use it in GitHub Desktop.
RESOLVENDO EQUAÇÕES DO SEGUNDO GRAU
##############################################
# 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