Рекурсивный алгоритм распознавания образов, страница 2

·  провести распознавание интересующего вектора выборки, по средствам занесения его в соответствующее поле на панели «Распознавание» и активизации операции «Распознать».

После проведения анализа существует возможность вернуться на этап модификации исходных данных (операция «Изменить исходные данные»), где можно сохранить проанализированную выборку (по средствам применения операции «Сохранить данные в файл») или создать другой набор данных.

5. Листинг программы

//--------------------------------------------------------------------------#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Laba1_Unit.h"

//--------------------------------------------------------------------------#pragma package(smart_init)

#pragma resource "*.dfm"

#define dim 10000

AnsiString Temp;

float **b;

float *Data;

float **g;

float Prognoz(float *mas,int NClas,int NPer)

{

int i,j;

float sum,max,ind;

for(i=1;i<=NClas;i++)

{

sum=0;

for(j=1;j<=NPer;j++)

sum=sum+g[i][j]*mas[j];

sum=sum+g[i][0];

if(i==1)

{

max=sum;

ind=1;

}

else

if(sum>max)

{

max=sum;

ind=i;

}

}

return ind;

}

//--------------------------------------------------------------------------TForm1 *Form1;

//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//--------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)

{

if(OpenDialog1->Execute())

{

delete[] Data;

Data = new float [dim];

EFileName->Text = OpenDialog1->FileName;

int f1 = FileOpen(EFileName->Text, fmOpenRead);

char ch;

ENPer->Text = "";

ENClas->Text = "";

ENNab->Text = "";

FileRead(f1,&ch,1);

while((ch<'0')||(ch>'9')) FileRead(f1,&ch,1);

while((ch>='0')&&(ch<='9'))

{

ENPer->Text = ENPer->Text + ch;

FileRead(f1,&ch,1);

}

while((ch<'0')||(ch>'9')) FileRead(f1,&ch,1);

while((ch>='0')&&(ch<='9'))

{

ENClas->Text = ENClas->Text + ch;

FileRead(f1,&ch,1);

}

while((ch<'0')||(ch>'9')) FileRead(f1,&ch,1);

while((ch>='0')&&(ch<='9'))

{

ENNab->Text = ENNab->Text + ch;

FileRead(f1,&ch,1);

}

int i,j,k,sum,sgn;

for(i=1;i<=StrToInt(ENNab->Text);i++)

{

for(j=1;j<=StrToInt(ENPer->Text);j++)

{

sum=(i-1)*(StrToInt(ENPer->Text)+1)+j;

Data[sum]=0;

while(((ch<'0')||(ch>'9'))&&(ch!='-')) FileRead(f1,&ch,1);

if(ch=='-')

{

sgn=-1;

FileRead(f1,&ch,1);

}

else sgn=1;

while((ch!='.')&&(ch!=',')&&(ch!=' '))

{

Data[sum]=Data[sum]*10+ch-'0';

FileRead(f1,&ch,1);

}

if((ch=='.')||(ch==','))

{

k=1;

float per;

FileRead(f1,&ch,1);

while(ch!=' ')

{

k=k*10;

per=ch-'0';

Data[sum]=Data[sum]+per/k;

FileRead(f1,&ch,1);

}

}

Data[sum]=Data[sum]*sgn;

}

while((ch<'0')||(ch>'9')) FileRead(f1,&ch,1);

sum=0;

while((ch<='9')&&(ch>='0'))

{

sum=sum*10+ch-'0';

FileRead(f1,&ch,1);

}

Data[i*(StrToInt(ENPer->Text)+1)]=sum;

}

FileClose(f1);

LChange->Width = 0;

}

else

ShowMessage(AnsiString("Не могу открыть файл!!!"));

}

//--------------------------------------------------------------------------void __fastcall TForm1::Button9Click(TObject *Sender)

{

delete [] Data;

Form1->Close();

}

//--------------------------------------------------------------------------void __fastcall TForm1::Button5Click(TObject *Sender)

{

if((ENPer->Text[1] > '0')&&

(ENClas->Text[1] > '0')&&

(ENNab->Text[1] > '0')&&

(ENPer->Text[1] <= '9')&&

(ENClas->Text[1] <= '9')&&

(ENNab->Text[1] <= '9'))

{

EClass->Text = "";

EElem->Text = "";

GBRasp->Height = 63;

ENPer->Enabled = false;

ENClas->Enabled = false;

GBAnaliz->Width = 169;

GBOperat->Width = 0;

Form1->ClientWidth = 343;

////////////////////////////////////

float *P;

float **M;

float **L;

int i,j,k,l;

float per,sum,sum1,sum2;