Главная страница

Пояснительная к курсовой работе. Пояснительная_записка_2бАСУ2. Курсовая работа по дисциплине Программирование


Скачать 499.78 Kb.
НазваниеКурсовая работа по дисциплине Программирование
АнкорПояснительная к курсовой работе
Дата18.02.2023
Размер499.78 Kb.
Формат файлаdocx
Имя файлаПояснительная_записка_2бАСУ2 .docx
ТипКурсовая
#943324
страница9 из 9
1   2   3   4   5   6   7   8   9

8.3 Заголовочный файл “Gauss.h”


//---------------------------------------------------------------------------

#pragma once

#ifndef GaussH

#define GaussH

//---------------------------------------------------------------------------

#endif

typedef float elem_type;

typedef DynamicArray> D_Matr;

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> D_Matr;

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;

}

}

//---------------------------------------------------------------------------
1   2   3   4   5   6   7   8   9


написать администратору сайта