Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function CentrMass(var index:integer): boolean;
- var i,xC,yC,kolvo,ind,res:integer;
- var tmp:integer;
- Begin
- xC:=0; yC:=0; kolvo:=0;
- //функция CentrMass сначала по формуле считает центр масс данного класса
- //функция CentrMass xC=(x1+x2+..+xm)/m; yC=..
- for i:=K+1 to N do
- begin
- if ( M[i][3]==M[index][3] ) then
- begin
- xC:=xC+M[i][1];
- yC:=yC+M[i][2];
- kolvo++;
- end;
- end;
- xC:=xC/kolvo; yC:=yC/kolvo; // ПРИВЕДЕНИЕ К ТИПУ!!
- //функция CentrMass далее в цикле считает расстояния от каждой точки данного класса i до найденного цетра масс, значение записывается в массив masRast
- //функция CentrMass - проверяется совпадение M[j].cvet==M[i].cvet - принадлежность тому или иному классу
- for var i:=1 to N do
- begin
- masRast[i]:=0.0;
- end;
- ind:=1;
- for var i:=K+1 to N do
- begin
- if ( M[i][3]==M[index][3] ) then
- begin
- masRast[ind]:=Rast(M[i][1], M[i][2], xC, yC); // функция Rast находит расстояние между очередной точкой M[i] и вершиной M[j]
- ind++;
- end;
- end;
- //функция CentrMass находим индекс эл-та с наименьшим расстоянием функцией minRast
- //функция CentrMass если этот индекс <> i, то FL устанавливается в 1, эл-ты массива M[i] и M[индекс] меняются местами
- res:=minRast(masRast[],ind);
- if (res!=index) then
- begin
- tmp:=M[index][1];
- M[index][1]:=M[i][1];
- M[i][1]:=tmp;
- tmp:=M[index][2];
- M[index][2]:=M[i][2];
- M[i][2]:=tmp;
- tmp:=M[index][3];
- M[index][3]:=M[i][3];
- M[i][3]:=tmp;
- CentrMass:=1;
- end else
- begin
- CentrMass:=0;
- end;
- End;
Add Comment
Please, Sign In to add comment