30.01.2019
Проект “Квадратное уравнение”.
Проект «Решение квадратного уравнения»
В этом задании вы создадите программу, в которой будет решаться квадратное уравнение стандартного вида ax2+bx+c=0. Форма проекта должна иметь следующий вид:
- В заголовке Формы запишите: «Решение квадратного уравнения».
- Разместите на Форме необходимые объекты (Panel(3 объекта), Edit(6), Label(8), Button(2)).
- Сохраните Проект.
- В разделе описания переменных varнадо перечислить все переменные, которые будут использоваться в программе, и указать тип.
В нашем случае все переменные одного типа – вещественные числа. Теперь эти переменные будут «видны» всей программе. Описание переменных можно производить и в каждой процедуре, где они используются.
- Теперь надо записать процедуру вычисления дискриминанта для кнопки «Вычислить»:
a:=StrToFloat (Edit1.Text);
b:= StrToFloat (Edit2.Text);
c:=StrToFloat (Edit3.Text);
D:=b*b-4*a*c;
При решении необходимо использовать ветвление: если d>0, то выводится сообщение ‘Квадратное уравнение не имеет корней’ (использовать MessageDlg), а в Edit выводится значение дискриминанта.
Если d>0 ‘Квадратное уравнение имеет два корня’.
Вычисляются корни по формулам:
x1:= (-b + Sqrt(d))/(2*a);
x2:= (-b – Sqrt(d))/(2*a);
В Edit выводится дискриминант и значения корней.
Если d=0, ‘Квадратное уравнение имеет один корень’, в Edit дискриминант и значение по формуле:
x1:= (-b)/(2*a);
- Подсказка для d<0:
if d<0 then begin
MessageDlg(‘Квадратное уравнение не имеет корней‘,mtWarning, [mbOk, mbCancel],0);
Edit4.Text:=FloatToStr(D);
end;
Программный код.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label10: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
a, b, c, D, X1, X2:Real;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat (Edit1.Text);
b:= StrToFloat (Edit2.Text);
c:=StrToFloat (Edit3.Text);
D:=b*b-4*a*c;
ifd<0 thenbegin
//если d<0 выводится сообщение, а иначе вычисляются корни
MessageDlg(‘Квадратное уравнение не имеет корней’,mtWarning, [mbOk, mbCancel],0);
Edit4.Text:=FloatToStr(D);
end;
if d>0 then begin MessageDlg(‘Квадратноеуравнениеимеетдвакорня‘,mtWarning, [mbOk, mbCancel],0);
X1:= (-b + Sqrt(d))/(2*a);
x2:= (-b – Sqrt(d))/(2*a);
Edit5.Text:=FloatToStr(x1);
Edit6.Text:=FloatToStr(x2);
Edit4.Text:=FloatToStr(D);
end;
if d=0 then begin
MessageDlg(‘Квадратноеуравнениеимеетодинкорень‘,mtWarning, [mbOk, mbCancel],0);
X1:= (-b)/(2*a); Edit5.Text:=FloatToStr(x1); Edit4.Text:=FloatToStr(D);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
end;
end.