Ajuda com equação do 2° grau
Olá,
criei um programa pra resolver uma equação do 2° grau e tá dando o seguinte erro depois de eu inserir os coeficientes e clicar no botão:
[img]http://arquivo.devmedia.com.br/forum/imagem/480368-20160413-153734.png[/img]
Invalid float point value.
Eis a Unit:
Se alguém puder ajudar a resolver esse problema agradeço.
criei um programa pra resolver uma equação do 2° grau e tá dando o seguinte erro depois de eu inserir os coeficientes e clicar no botão:
[img]http://arquivo.devmedia.com.br/forum/imagem/480368-20160413-153734.png[/img]
Invalid float point value.
Eis a Unit:
unit calcularaizesequação2grau;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Math;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c,raiz1,raiz2,delta: Real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
delta:= power (b,2) -4*a*c;
begin
raiz1 := (-(b)+(sqrt(delta)))/2*a;
raiz1 := StrToFloat(Edit4.Text);
raiz2:= (-(b)-(sqrt(delta)))/2*a;
raiz2 := StrToFloat (Edit5.Text);
end;
end;
end.Se alguém puder ajudar a resolver esse problema agradeço.
Adriano Freitas
Curtidas 0
Respostas
Raylan Zibel
13/04/2016
Exatamente em qual linha deu erro?
"StrToFloat(Edit4.Text);" vai dar erro se "Edit4.Text" não tiver valor...
"StrToFloat(Edit4.Text);" vai dar erro se "Edit4.Text" não tiver valor...
GOSTEI 0
Natanael Ferreira
13/04/2016
O erro acontece porque neste caso (a=5, b=2, c=10) tem como resultado um delta negativo.
Nas regras matemáticas:
Delta = 0 (Duas raízes iguais)
Delta > 0 (Duas raízes diferentes)
Delta < 0 (Não há raízes)
O seu código deve seguir estas regras. Teste assim:
Nas regras matemáticas:
Delta = 0 (Duas raízes iguais)
Delta > 0 (Duas raízes diferentes)
Delta < 0 (Não há raízes)
O seu código deve seguir estas regras. Teste assim:
var
a, b, c, raiz1, raiz2, delta: Double;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
delta := power(b, 2) - 4 * a * c;
if delta > 0 then
begin
raiz1 := ((-b) + sqrt(delta)) / (2 * a);
Edit4.Text := FloatToStr(raiz1);
raiz2 := ((-b) - sqrt(delta)) / (2 * a);
Edit5.Text := FloatToStr(raiz2);
end;
if delta = 0 then
begin
raiz1 := ((-b) - sqrt(delta)) / (2 * a);
Edit4.Text := FloatToStr(raiz1);
Edit5.Text := FloatToStr(raiz1);
end;
if delta < 0 then
ShowMessage('Não há raízes para delta menor que zero');
end;GOSTEI 0