Файл UBikvur.h
//---------------------------------------------------------------------------
#ifndef UBikvurH
#define UBikvurH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "HandTuning.h"
#include <ExtCtrls.hpp>
#include <Menus.hpp>
//---------------------------------------------------------------------------
class TfrmBikvur: public TForm
{__published: // IDE-managed Components
THandTuning *htA;
THandTuning *htB;
THandTuning *htC;
TButton *btnCalc;
TListBox *lbxX;
TLabel *Label1;
TLabel *Label2;
TButton *btnExit;
TButton *btnClear;
TMainMenu *MainMenu1;
TMenuItem *N1;
TMenuItem *N2;
TMenuItem *N3;
TMenuItem *N4;
TMenuItem *N5;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
void __fastcall btnCalcClick(TObject *Sender);
void __fastcall btnExitClick(TObject *Sender);
void __fastcall btnClearClick(TObject *Sender);
private: // User declarations
list<double> __fastcall Bikvur(double a, double b, double c);
public: // User declarations
__fastcall TfrmBikvur(TComponent* Owner);};
//---------------------------------------------------------------------------
extern PACKAGE TfrmBikvur *frmBikvur;
//---------------------------------------------------------------------------
#endif
Файл UBikvur.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#include <list.h>
#pragma hdrstop
#include "UBikvur.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "HandTuning"
#pragma resource "*.dfm"
TfrmBikvur *frmBikvur;
//---------------------------------------------------------------------------
list<double> __fastcall TfrmBikvur::Bikvur(double a, double b, double c)
{double y1, y2;
list<double> x;
//вычислене d дискриминанта
double d = b * b - 4 * a * c;
//корни существуют, если d >= 0
if(d >= 0)
{y1 = (-b - sqrt(d)) / 2 * a;
y2 = (-b + sqrt(d)) / 2 * a;}
if(d < 0 || (y1 < 0 && y2 < 0))
{Application->MessageBoxA(L"Действительных корней нет", L"Информация", MB_OK + MB_ICONINFORMATION);
return x;}
//вычисление корней биквадратного уравнения
else
{if(y1 >= 0 && y2 >= 0)
{x.push_back(sqrt(y1));
x.push_back(-sqrt(y1));
x.push_back(sqrt(y2));
x.push_back(-sqrt(y2));}
else
{if(y1 < 0 && y2 >= 0)
{x.push_back(sqrt(y2));
x.push_back(-sqrt(y2));}
else
{x.push_back(sqrt(y1));
x.push_back(-sqrt(y1));}}}
return x;}
//---------------------------------------------------------------------------
__fastcall TfrmBikvur::TfrmBikvur(TComponent* Owner)
: TForm(Owner)
{}
//---------------------------------------------------------------------------
void __fastcall TfrmBikvur::btnCalcClick(TObject *Sender)
{lbxX->Clear();
list<double> res = Bikvur(htA->Value, htB->Value, htC->Value);
int i = 1;
while(!res.empty())
{lbxX->Items->Add("x" + IntToStr(i) + " = " + FormatFloat("0.000", res.front()));
res.pop_front();
i++;}}
//---------------------------------------------------------------------------
void __fastcall TfrmBikvur::btnExitClick(TObject *Sender)
{this->Close();}
//---------------------------------------------------------------------------
void __fastcall TfrmBikvur::btnClearClick(TObject *Sender)
{htA->Value = 0;
htB->Value = 0;
htC->Value = 0;
lbxX->Clear();}
//---------------------------------------------------------------------------
Пример выполнения программы
Пример 1.
Рисунок 1 – Решение биквадратного уравнения
Пример 2.
Рисунок 2 – Решение биквадратного уравнения
Пример 3.
Рисунок 3 – Решение биквадратного уравнения
Пример 4.
Рисунок 4 – Решение биквадратного уравнения
Пример 5.
Рисунок 5– Решение биквадратного уравнения
Пример 6.
Рисунок 6 – Очистка из пункта меню
Пример 7.
Рисунок 7 – Выход из программы
Заключение
В рамках данной курсовой работы была поставлена задача: построить алгоритм и реализовать программный продукт для нахождения корней биквадратного уравнения.
В результате проектирования был составлен принципиальный алгоритм для решения поставленной задачи. Далее он был детализован и реализован на ЭВМ. В конце, был проведён анализ полученных результатов, и сделаны необходимые выводы.
Программный продукт был реализован в среде визуального программирования CodeGear RadStudio 2009 под ОС типа Windows для IBM PC-совместимых компьютеров.
Созданный программный продукт позволяет решить поставленную задачу. Также можно указать о том, что программа имеет интуитивно понятный интерфейс, что дополнительно помогает пользователю с наибольшей результативностью использовать программу.
В заключение после анализа полученных результатов были сделаны выводы, согласно которым алгоритм работает и применим для поставленной задачи.