Урок 13 Генератор квадратных уравнений. Калькулятор квадратных уравнений
В первой части урока представлено описание построения программы генерирующей квадратные уравнения. Воспользуемся теоремой Виета, которая позволяет по заданным корням определять коэффициенты p и q приведенного квадратного уравнения x2 + px + q = 0. Корни квадратного уравнения x1 и x2 будет задавать генератор случайных чисел. Затем программа будет формировать по теореме Виета приведенное квадратное уравнение.
На стартовой форме Form1 вашего приложения разместите компоненты Button1, Label1 и Label2. Теперь можно приступать к написанию функции обработки Button1Click. Не забудьте в разделе var предварительно зарезервировать переменные целого типа x1, x2, p, q. Это корни квадратного уравнения и коэффициенты приведенного квадратного уравнения.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x1, x2, p, q: integer; // переменные целого типа
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
randomize(); // инициализация генератора псевдослучайных чисел
x1 := random(20); // случайный первый корень
x2 := random(20); // случайный второй корень
p := -(x1 + x2); // вычисление по теореме Виета
q := x1*x2; // вычисление по теореме Виета
// вывод уравнения на экран
Label1.Caption := 'x2 ' + IntToStr(p) + 'x + ' + IntToStr(q) + ' = 0';
// вывод корней уравнения на экран
Label2.Caption := 'x1 = ' + IntToStr(x1) + ' x2 = ' + IntToStr(x2);
end;
end.
Вторую часть урока посвятим программе, которая будет решать квадратные уравнения вида ax2 + bx + c = 0. Откройте новый проект. На стартовой форме Form1 разместите компоненты Button1, Label1, Label2, Edit1, Edit2 и Edit3. В разделе var зарезервируйте вещественные переменные a, b, c, x1, x2, d. Функцию обработки Button1Click наполните программным кодом.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
//резервирование памяти для переменных вещественного типа
a, b, c, x1, x2, d: real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//ввод коэффициентов квадратного уравнения
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
d := b*b - 4*a*c; //вычисление дискриминанта
if (d >= 0) then //блок ЕСЛИ
begin
x1 := (-b + sqrt(d))/(2*a); //вычисление 1-го корня
x2 := (-b - sqrt(d))/(2*a); //вычисление 2-го корня
//вывод корней квадратного уравнения на экран
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
Label7.Caption := 'Дискриминант = ' + FloatToStr(d);
end
else
begin
Label1.Caption := 'Дискриминант = ' + FloatToStr(d);
Label2.Caption := 'Корней нет!'; //вывод сообщения
Label7.Caption := '';
end;
end;
end.
Выбери лучшее! allbest |