Xô ve se entendi isso funciona como a formula , só que resolve direto a equação ?
- Forums
- OTServ
- Recursos
- Scripting
- Mods, funções e outros
- Formula de Bhaskara
info
Group: Visconde
Joined: 04/01/13
Posts: 479
Reputation: +59
Tibia Character: Lord Pau Listinha

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.
info
Group: Infante
Joined: 04/03/11
Posts: 1.6k
Reputation: +393
Tibia Character: No Have

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.
Edited Janeiro 13 by caotic
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...
info
Group: Infante
Joined: 04/03/11
Posts: 1.6k
Reputation: +393
Tibia Character: No Have

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.
Edited Janeiro 19 by caotic
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





info
Group: Infante
Joined: 04/03/11
Posts: 1.6k
Reputation: +393
Tibia Character: No Have
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)Edited Janeiro 19 by caotic