Ir para conteúdo

Formula de Bhaskara


caotic

Posts Recomendados

Bhaskara e um formula matematica capaz de resolver uma equação de segunda grau(ax^2+bx+c) ela é muito abordada no 6°~9° do ensino fundamental chegando também no ensino medio.

 

Eu fiz uma versão com ultlização simples basta colocar a equação de 2 grau numa string que ele irá resolver a sua equação.

 function string.explode(e, sep)
        local result = {}     
  e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
 
        return result[1] and result or 0
end
 
function executeFormBashakara(bash)
 
local function validateZero(x)
local x = tostring(x)
if string.sub(x, 1, 1) == "-" and string.sub(x, 2, 2) == "0" or not tonumber(x) then
return 0
end
return x
end
 
local function adptBhaskSing(bask)
bask = string.gsub(bask, " ", "")
bask = string.gsub(bask, "-", "+-")
return bask
end
 
local function stringToNumber(str)
for i =1, #str do
local y = string.sub(str, 1, i)
if y ~= "-" and y ~= "+" then
if not tonumber(y) then
return tonumber(x) 
end
end
x = y
end
return y  
end
 
bash = adptBhaskSing(bash)
 
a = string.explode(bash, "+")[1] 
b = string.explode(bash, "+")[2] 
c = string.explode(bash, "+")[3] 
delta = (stringToNumber(b)^2)+(-4*stringToNumber(a)*stringToNumber(c))
if delta < 0 then
return false,delta
end
bhask1 = validateZero((stringToNumber(b)+math.sqrt(delta))/(2*stringToNumber(a)))
bhash2 = validateZero((stringToNumber(b)-math.sqrt(delta))/(2*stringToNumber(a)))
 
return bhask1,bhash2
end
 
x,y = executeFormBashakara("4x2 = 0 ")
 
print(x)
print(y)
Editado por caotic
Link para o comentário
Compartilhar em outros sites

funciona direito n...

 

 

x,y = executeFormBashakara("4x2 + 1x -5 = 0 ")

print(x)
print(y)

 

deu:

false
-16

 

tentei coloca o expoente 1 do segundo x, mas ainda sim n foi.

 

x,y = executeFormBashakara("4x2 = 4 ")

print(x)
print(y)

 

deu

0
0

sem coments

 

x,y = executeFormBashakara("1x2 - 2x - 63 = 0 ")

print(x)
print(y)

 

deu

 

1.4142135623731
-1.4142135623731
what the fuck, da onde saiu esse resultado escroto?? o correto seria -7 e 9...

 

tenta fazer menor e de forma simples, fica mais facil de achar os erros, e geralmente da da mais certo.

 



Link para o comentário
Compartilhar em outros sites

funciona direito n...

 

 

 

funciona direito n...

 

 

x,y = executeFormBashakara("4x2 + 1x -5 = 0 ")

 

print(x)

print(y)

 

deu:

false

-16

 

tentei coloca o expoente 1 do segundo x, mas ainda sim n foi.

 

x,y = executeFormBashakara("4x2 = 4 ")

 

print(x)

print(y)

 

deu

0

0

sem coments

 

x,y = executeFormBashakara("1x2 - 2x - 63 = 0 ")

 

print(x)

print(y)

 

deu

 

1.4142135623731

-1.4142135623731

what the fuck, da onde saiu esse resultado escroto?? o correto seria -7 e 9...

 

tenta fazer menor e de forma simples, fica mais facil de achar os erros, e geralmente da da mais certo.

 

 

 

x,y = executeFormBashakara("4x2 + 1x -5 = 0 ")

 

print(x)

print(y)

 

deu:

false

-16

 

tentei coloca o expoente 1 do segundo x, mas ainda sim n foi.

 

x,y = executeFormBashakara("4x2 = 4 ")

 

print(x)

print(y)

 

deu

0

0

sem coments

 

x,y = executeFormBashakara("1x2 - 2x - 63 = 0 ")

 

print(x)

print(y)

 

deu

 

1.4142135623731

-1.4142135623731

what the fuck, da onde saiu esse resultado escroto?? o correto seria -7 e 9...

 

tenta fazer menor e de forma simples, fica mais facil de achar os erros, e geralmente da da mais certo.

 

 

 

Da erro e por causa da função adptBhaskUnknownsNumbers(bash)

Foda que quando fui conferir ela tava colocando zeros em valores de b ou c que ja existiam mais to resolvendo o problema.

Vou pensar uma maneira de reduzir memoria.

 

Se você retirar vai estar totalmente normal.

Acabei de ver também que tinha colocado um (-) na formula final de bashkara ja concertei.

Editado por caotic
Link para o comentário
Compartilhar em outros sites

Ah, Thiago, como eu amo seus POGs, mas eu prometi para mim mesmo que não vou refazer funções alheias para alimentar meu ego...

Não cara.

Adoro as suas versões diretas.

 

Chega a um ponto ser engraçado rs.

Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Eu faria algo assim:

 

local equation = "1x2+2x+1"
pattern = "(%d-)x2[+]?[-]?(%d-)x[+]?[-]?(%d-)$"
local a, b, c = string.match(equation, pattern)
local delta = b^2 - 4 * a * c
if delta >= 0 and a ~= 0 then
 x1 = (- b + math.sqrt(delta))/ (2 * a)
 x2 = (- b - math.sqrt(delta))/ (2 * a)
  print(x1, x2)
else
 print("error")
end
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...