Помогите Прокомментировать Программу

  • Автор темы MaryM
  • Дата начала
M

MaryM

#1
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i,j;
int ish[20][20];
int kk=0,
nr=4,
nd=4;
struct rez{
int val;
int down;
int up;
int par;
int sovp;
};
struct rank{
int x;
float k;
};
rez pt[5];
rank rang1[7],rang2[7],rang3[7],rang4[7],rang5[7],b;
int factorial(int n);
float vvv=0,v1,v2,skiz=0,sksc=0,ksush=0;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

void __fastcall TForm1::FormCreate(TObject *Sender)

{
for(i=0;i<5;i++)
pt.val=0;
for (i=1;i < (StringGrid1->ColCount)-1;i++)
StringGrid1->Cells[0]=i;

for(i=0;i<(StringGrid1->ColCount);i++)
{
for(j=1;j<=StringGrid1->RowCount;j++) StringGrid1->Cells[j]="0";
}

StringGrid1->Cells[0][0]="T";
StringGrid1->Cells[(StringGrid1->ColCount)-1][0]="Y";
StringGrid2->Cells[0][0]="K??";
StringGrid3->Cells[0][0]="????";
StringGrid4->Cells[0][0]="????";
for(i=0;i<8;i++)
{
rang1.k=0;
rang2.k=0;
rang3.k=0;
rang4.k=0;
rang5.k=1;
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
sksc=0;
int k=0;
for(i=1;i<StringGrid1->ColCount;i++)
{
for(j=1;j<StringGrid1->RowCount;j++)
{
if(StringGrid1->Cells[j]=="") k=1;
}
}
if(k==0)
{

for(i=1;i<StringGrid1->ColCount;i++)
{
for(j=1;j<StringGrid1->RowCount;j++)
{
ish[j]=StrToInt(StringGrid1->Cells[j]);
if(j!=7)
{
if(ish[j]==StrToInt(ComboBox1->Text)) ish[j]=StrToInt(ComboBox2->Text);
if(ish[j]==StrToInt(ComboBox3->Text)) ish[j]=StrToInt(ComboBox4->Text);
}
Label1->Caption="";
}
//kk=1;
}
}
else Label1->Caption="????????? ???? ???????";

//----------------------------------------------------
//for(j=1;j<=11;j++) if(ish[7][j]==1) StringGrid2->Cells[0][j]=IntToStr(ish[7][j]);
for(i=1;i<StringGrid1->RowCount;i++) pt.val=0;
for(j=1;j<=StringGrid1->RowCount;j++)
{
pt[(ish[j][7])].val++;
if(j==1) pt[ish[j][7]].down=j;
if(ish[j][7]!=ish[j-1][7])
{
pt[ish[j][7]].down=j;
pt[ish[j-1][7]].up=j-1;
}
//if(j+==(StringGrid1->RowCount)) pt[ish[j][7]].up=j;
}
//float *ksc = new float[StringGrid1->RowCount];
float ksc;
//-------------------------------------------------------------
int ii,jj;

for(ii=1;ii<StringGrid1->ColCount-1;ii++)
{
for(i=1;i<5;i++)
{
pt.par=0;
pt.sovp=0;
}
for(i=1;i<5;i++)
{
if(pt.val>1)
{
pt.par=factorial(pt.val)/(2*factorial(pt.val-2));
//------
for(j=pt.down;j<=pt.up;j++)
{
for(jj=pt.down;jj<=pt.up;jj++)
{
if(jj!=j)
{
if(ish[j][ii]==ish[jj][ii]) pt.sovp++;
}
}
}
pt.sovp=(pt.sovp)/2;
//------------------
}
else
{
pt.par=0;
pt.sovp=0;
}
}
//------------------------------------------------------------
ksc=0;
j=0;
ksc=0;
for(i=1;i<5;i++)
{
if(pt.par>0)
{
v1=pt.sovp;
v2=pt.par;
vvv=v1/v2;
ksc=ksc+vvv;
j++;
}
}

if(j!=0) ksc=ksc/j;
StringGrid2->Cells[ii][0]=ksc;
sksc=sksc+ksc;
}
//---------------------------------------------------


//-----------------------------------------------------
}


//---------------------------------------------------------------------------
int factorial(int n)
{
if(n==0) return 1;
else return n*factorial(n-1);
};
//=================================================
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
int k=0;
int prov[5][5];

for(i=1;i<StringGrid1->ColCount;i++)
{
for(j=1;j<StringGrid1->RowCount;j++)
{
if(StringGrid1->Cells[j]=="") k=1;
}
}
if(k==0)
{

for(i=1;i<StringGrid1->ColCount;i++)
{
for(j=1;j<StringGrid1->RowCount;j++)
{
ish[j]=StrToInt(StringGrid1->Cells[j]);
if(j!=7)
{
if(ish[j]==StrToInt(ComboBox1->Text)) ish[j]=StrToInt(ComboBox2->Text);
if(ish[j]==StrToInt(ComboBox3->Text)) ish[j]=StrToInt(ComboBox4->Text);
}
Label1->Caption="";
}
}
}
else Label1->Caption="????????? ???? ???????";
for(i=1;i<StringGrid1->RowCount;i++) pt.val=0;
for(j=1;j<=StringGrid1->RowCount;j++)
{
pt[(ish[j][7])].val++;
if(j==1) pt[ish[j][7]].down=j;
if(ish[j][7]!=ish[j-1][7])
{
pt[ish[j][7]].down=j;
pt[ish[j-1][7]].up=j-1;
}
}
float kiz;
//===============================================================
//===============================================================
//===============================================================
int ii,jj,ll,summator=0,soch=0;
float sigma=0,hh=0;
skiz=0;
for(ii=1;ii<StringGrid1->ColCount-1;ii++)
{
kiz=0;
sigma=0;
soch=0;
for(i=1;i<5;i++)
{
for(j=1;j<5;j++) prov[j]=0;
}
for(i=1;i<5;i++)
{
if(pt.val>1)
{
for(ll=1;ll<5;ll++)
{
if(pt[ll].val>1)
{
summator=0;
if(prov[ll]==0 && i!=ll)
{
for(j=pt.down;j<=pt.up;j++)
{
for(jj=pt[ll].down;jj<=pt[ll].up;jj++)
{
if(ish[j][ii]!=ish[jj][ii]) summator++;
}
}
hh=pt.val*pt[ll].val;
hh=summator/hh;
sigma=sigma+hh;
prov[ll]=1;
soch++;

}

}
}

}
//------------------------------------------------------------

}
kiz=0;
if(soch!=0) kiz=sigma/soch;
StringGrid3->Cells[ii][0]=kiz;
skiz=skiz+kiz;
}
}

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

void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
float s1,s2;
for(i=1;i<StringGrid4->ColCount;i++)
{
s1=StrToFloat(StringGrid2->Cells[0]);
s2=StrToFloat(StringGrid3->Cells[0]);
StringGrid4->Cells[0]=s1*s2;
}
Edit1->Text=(skiz*sksc)/(StringGrid1->ColCount-2)/(StringGrid1->ColCount-2);
//-----------------??????????----------------------------------
for(i=1;i<StringGrid1->ColCount-1;i++)
{
rang1.x=i;
rang1.k=StrToFloat(StringGrid4->Cells[0]);
}
for(i=1;i<StringGrid1->ColCount-1;i++)
{
for(j=1;j<StringGrid1->ColCount-1;j++)
{
if(rang1[j].k<rang1[j+1].k)
{
b.k=rang1[j+1].k;
b.x=rang1[j+1].x;
rang1[j+1].k=rang1[j].k;
rang1[j+1].x=rang1[j].x;
rang1[j].x=b.x;
rang1[j].k=b.k;
}
}
}
for(i=0;i<StringGrid1->ColCount-2;i++) StringGrid5->Cells[0]=rang1[i+1].x;
for(i=1;i<StringGrid1->ColCount-1;i++)
{
rang2.x=i;
rang2.k=StrToFloat(StringGrid2->Cells[0]);
rang3.x=i;
rang3.k=StrToFloat(StringGrid3->Cells[0]);
}
for(i=1;i<StringGrid1->ColCount-1;i++)
{
for(j=1;j<StringGrid1->ColCount-1;j++)
{
if(rang2[j].k<rang2[j+1].k)
{
b.k=rang2[j+1].k;
b.x=rang2[j+1].x;
rang2[j+1].k=rang2[j].k;
rang2[j+1].x=rang2[j].x;
rang2[j].x=b.x;
rang2[j].k=b.k;
}
}
}
for(i=1;i<StringGrid1->ColCount-1;i++)
{
for(j=1;j<StringGrid1->ColCount-1;j++)
{
if(rang3[j].k<rang3[j+1].k)
{
b.k=rang3[j+1].k;
b.x=rang3[j+1].x;
rang3[j+1].k=rang3[j].k;
rang3[j+1].x=rang3[j].x;
rang3[j].x=b.x;
rang3[j].k=b.k;
}
}
}
//----------------------------for "+" ---------------
for(i=0;i<8;i++) rang4.k=0;
for(i=1;i<StringGrid1->ColCount-1;i++)
{
rang4.x=i;
for(j=1;j<StringGrid1->ColCount-1;j++)
{
if(rang2[j].x==i)
{
rang4.k=rang4.k+j;
}
if(rang3[j].x==i)
{
rang4.k=rang4.k+j;
}
}
}
for(i=1;i<StringGrid1->ColCount-1;i++)
{
for(j=1;j<StringGrid1->ColCount-1;j++)
{
if(rang4[j].k>rang4[j+1].k)
{
b.k=rang4[j+1].k;
b.x=rang4[j+1].x;
rang4[j+1].k=rang4[j].k;
rang4[j+1].x=rang4[j].x;
rang4[j].x=b.x;
rang4[j].k=b.k;
}
}
}
for(i=0;i<8;i++) rang5.k=1;
for(i=0;i<StringGrid1->ColCount-2;i++) StringGrid6->Cells[0]=rang4[i+1].x;
//---------------for multiplication---------------
for(i=1;i<StringGrid1->ColCount-1;i++)
{
for(j=1;j<StringGrid1->ColCount-1;j++)
{
rang5.x=i;

if(rang2[j].x==i)
{
rang5.k=rang5.k*j;
}
if(rang3[j].x==i)
{
rang5.k=rang5.k*j;
}
}
}
for(i=1;i<StringGrid1->ColCount-1;i++)
{
for(j=1;j<StringGrid1->ColCount-1;j++)
{
if(rang5[j].k>rang5[j+1].k)
{
b.k=rang5[j+1].k;
b.x=rang5[j+1].x;
rang5[j+1].k=rang5[j].k;
rang5[j+1].x=rang5[j].x;
rang5[j].x=b.x;
rang5[j].k=b.k;
}
}
}
}
//---------------------------------------------------------------------------