Создание исследовательского прототипа системы идентификации табличных данныхРефераты >> Программирование и компьютеры >> Создание исследовательского прототипа системы идентификации табличных данных
if(!Unind[f1][f2])
return(0);
int AccumPay=0;
int FMpr;
int SMpr;
int FI,SI;
double E1,E2,E;
// bool MatrixOfUse[MaxID][2];
for(int i=0;i<Unind[f1][f2];i++){
FI=-1;SI=-1;
if(AnalizePosWithMU(Fst,f1,United[f1][f2][i],FI,FMpr))
if(AnalizePosWithMU(Snd,f2,United[f1][f2][i],SI,SMpr)){
E1=(Fst.Numbers[FI][f1]*FMpr);
E2=(Snd.Numbers[SI][f2]*SMpr);
E=fabs(E1-E2)/E1;
if (E<0.011){
AccumPay+=1;
}
else
return(-1);
}
}
return(AccumPay);
}
int TfCompare::PositionsCompare(TPositions Fst,TPositions Snd,int &Numbers){
int Accum=0;
int N=0;
for(int f=0;f<max(Fst.FlowCount,Snd.FlowCount);f++){
if(FromBaseToDoc[f][1]!=-1){
N=NumberCompare(f,FromBaseToDoc[f][1],Fst,Snd);
if(N==-1)
return(0);
Numbers+=N;
}
if(FromBaseToDoc[f][0]!=-1)
Accum+=StringCompare(f,FromBaseToDoc[f][0],Fst,Snd);
}
return(Accum);
}
bool TfCompare::Compare(){
if(!GetInfo())
return(false);
nFind(0);
return(true);
}
void TfCompare::nFind(int Index){
ProgressBar1->Max=FileSize(BaseF);
TPositionTree *BaseNode,*BaseDriveNode,*DocNode;
BaseNode=NULL;
int PayMent=-1;
int CurPayMent;
int Num=0;
int AcNumbers;
DocNode=((TPositionTree *)DocL->Items[Index]);
for(int i=0;i<BaseL->Count;i++){
Num=0;
ProgressBar1->Position++;
BaseDriveNode=((TPositionTree *)BaseL->Items[i]);
CurPayMent=PositionsCompare(DocNode->IP,BaseDriveNode->IP,Num);
if(CurPayMent<Edit1->Text.ToInt())
continue;
if(Num<AcNumbers)
continue;
if(CurPayMent>PayMent){
PayMent=CurPayMent;
BaseNode=BaseDriveNode;
AcNumbers=Num;
}
}
/* TRect x,y;*/
if(BaseNode!=NULL)
sg->Cells[1][Index]=BaseNode->OP()+AnsiString(" ")+
IntToStr(PayMent)+AnsiString(" ")+IntToStr(AcNumbers);
else
sg->Cells[1][Index]="---------";
/* double delitel=2000/PayMent;
sg->Canvas->Brush->Color=(clBlue-clRed)/delitel+clRed;
y=sg->CellRect(1,Index);
sg->Canvas->FillRect(y);
//sg->Canvas->Lock(); */
ProgressBar1->Position=0;
}
void fastcall TfCompare::Button4Click(TObject *Sender)
{
GetInfo();
}
//---------------------------------------------------------------------------
void fastcall TfCompare::sgDblClick(TObject *Sender)
{
if(!Base||!Doc||sg->RowCount==1)
return;
TGridRect gr;
gr=sg->Selection;
nFind(gr.Top);
//Compare();
}
//---------------------------------------------------------------------------