Пояснительная к курсовой работе. Пояснительная_записка_2бАСУ2. Курсовая работа по дисциплине Программирование
Скачать 499.78 Kb.
|
8.3 Заголовочный файл “Gauss.h”//--------------------------------------------------------------------------- #pragma once #ifndef GaussH #define GaussH //--------------------------------------------------------------------------- #endif typedef float elem_type; typedef DynamicArray bool Gauss(D_Matr &mas, elem_type &a_par, elem_type &b_par, elem_type &c_par); 8.4 Файл реализации “Gauss.cpp”//--------------------------------------------------------------------------- #pragma hdrstop #include "Gauss.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #include #include #include #include #include #include #include using namespace std; typedef float elem_type; typedef DynamicArray bool Gauss(D_Matr &mas, elem_type a_par, elem_type b_par, elem_type c_par); bool Gauss(D_Matr &mas, elem_type &a_par, elem_type &b_par, elem_type &c_par){ int n = mas.Length; int m = mas[0].Length; int k; float eps = 0.0001; elem_type* str = new elem_type[m]; for (k = 0; k < n; k++) { // Ищем максимальный элемент в столбце int index = 0; elem_type max = abs(mas[k][k]); for (int i = k; i < n; i++) { if (abs(mas[i][k]) > max) { max = mas[i][k]; index = i; } } if (max < eps) { // нет ненулевых диагональных элементов return false; } //Переставляем строки if (!(k == n - 1)) { for (int i = k; i < m; i++) { str[i] = mas[k][i]; mas[k][i] = mas[index][i]; mas[index][i] = str[i]; } } //Делим строку на первый элемент for (int i = k; i < n; i++) { float ak = mas[i][k]; for (int j = k; j < m; j++) { mas[i][j] /= ak; } } //Вычитаем строку из ниже стоящих for (int i = k + 1; i < n; i++) { for (int j = 0; j < m; j++) { mas[i][j] -= mas[k][j]; } } } // Обратный ход elem_type* x = new elem_type[n]; for (int i = 0; i < n; i++) x[i] = mas[i][n]; for (int i = n - 2; i >= 0; i--) for (int j = i + 1; j < n; j++) x[i] -= x[j] * mas[i][j]; a_par = x[0]; b_par = x[1]; c_par = x[2]; return true; } 8.5 Заголовочный файл “extrapolation.h”//--------------------------------------------------------------------------- #ifndef extrapolationH #define extrapolationH //--------------------------------------------------------------------------- #include #include #include #include #include "cspin.h" //--------------------------------------------------------------------------- class TForm2 : public TForm { __published: // IDE-managed Components TLabel *Label_X; TLabel *Label_Lin; TLabel *Label_Par; TCSpinEdit *CSpinEdit_X; TEdit *Edit_Lin; TEdit *Edit_Par; void __fastcall CSpinEdit_XKeyPress(TObject *Sender, System::WideChar &Key); void __fastcall CSpinEdit_XChange(TObject *Sender); void __fastcall Edit_LinKeyPress(TObject *Sender, System::WideChar &Key); void __fastcall Edit_ParKeyPress(TObject *Sender, System::WideChar &Key); private: float x, lin, par; // User declarations public: // User declarations __fastcall TForm2(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm2 *Form2; //--------------------------------------------------------------------------- #endif 8.6 Файл реализации “extrapolation.сpp”//--------------------------------------------------------------------------- #include #pragma hdrstop #include "extrapolation.h" #include "mFunit.cpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cspin" #pragma resource "*.dfm" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { extern elem_type a_l, b_l, a_par, b_par, c_par; } //--------------------------------------------------------------------------- void __fastcall TForm2::CSpinEdit_XKeyPress(TObject *Sender, System::WideChar &Key) { if(Key == VK_ESCAPE||Key == VK_RETURN){ if (Key == VK_ESCAPE){ Close(); } x = StrToFloat(CSpinEdit_X->Text); lin = a_l*x + b_l; par = a_par * pow(x,2) + b_par * x + c_par; Edit_Lin->Text = FloatToStrF(lin, ffGeneral, 3 , 3); Edit_Par->Text = FloatToStrF(par, ffGeneral, 3 , 3); return; } if(!(Key >= L'0'& Key<= L'9' || Key== FormatSettings.DecimalSeparator || Key == L'+' || Key == L'-' || Key == L'e' || Key == L'E')&& Key != VK_BACK && Key != 3/*C_c*/ && Key != 22/*C_v*/&& Key != 26/*C_z*/){ Key = 0; } } //--------------------------------------------------------------------------- void __fastcall TForm2::CSpinEdit_XChange(TObject *Sender) { x = StrToFloat(CSpinEdit_X->Text); lin = a_l*x + b_l; par = a_par * pow(x,2) + b_par * x + c_par; Edit_Lin->Text = FloatToStrF(lin, ffGeneral, 3 , 3); Edit_Par->Text = FloatToStrF(par, ffGeneral, 3 , 3); } //--------------------------------------------------------------------------- void __fastcall TForm2::Edit_LinKeyPress(TObject *Sender, System::WideChar &Key) { if( Key != 3/*C_c*/ ){ Key = 0; } } //--------------------------------------------------------------------------- void __fastcall TForm2::Edit_ParKeyPress(TObject *Sender, System::WideChar &Key) { if( Key != 3/*C_c*/ ){ Key = 0; } } //--------------------------------------------------------------------------- |