Fórum Ajuda com equação do 2° grau #551326
13/04/2016
0
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
Curtir tópico
+ 0Posts
13/04/2016
Raylan Zibel
"StrToFloat(Edit4.Text);" vai dar erro se "Edit4.Text" não tiver valor...
Gostei + 0
13/04/2016
Natanael Ferreira
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
Clique aqui para fazer login e interagir na Comunidade :)