Код | procedure TForm1.Button2Click(Sender: TObject); var i,j,number,number1,number2:integer; d,max,min1,min2,min:extended; kernel_mas:array [1..100] of integer; x,y,rd,color:integer; begin color:=1; {x:=StrToInt(StringGrid1.Cells[1,1]); y:=StrToInt(StringGrid1.Cells[2,1]); } for j:=1 to vcount do begin x:=StrToInt(StringGrid1.Cells[1,j]); y:=StrToInt(StringGrid1.Cells[2,j]); Image1.Canvas.Ellipse(x-5,y-5,x+5,y+5); Image1.Canvas.TextOut(x+5,y+5,IntToStr(j)); end; Randomize; j:=random(vcount); x:=StrToInt(StringGrid1.Cells[1,j]); y:=StrToInt(StringGrid1.Cells[2,j]); Image1.Canvas.Brush.Color:=color; Image1.Canvas.Ellipse(x-5,y-5,x+5,y+5);
max:=0; //Memo1.Lines.Add('N1=X(1)'); //вычисляем расстояния от первого ядра до остальных объектов. N2-оъект с мах //расстоянием до первого ядра. for i:=2 to vcount do begin d:=evclid(j,i); if d>max then begin max:=d; number:=i; end; end; x:=StrToInt(StringGrid1.Cells[1,i]); y:=StrToInt(StringGrid1.Cells[2,i]); Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Ellipse(x-5,y-5,x+5,y+5);
end;
|
Функция evclid:
Код | function evclid(i:integer;j:integer):extended; var k,rez,_sqr:integer; begin rez:=0; for k:=1 to kcount do begin _sqr:=sqr(StrToInt(Form1.StringGrid1.Cells[k,i])-StrToInt(Form1.StringGrid1.Cells[k,j])); rez:=rez+_sqr; end;
|
При нажатии на данную кнопку, вылазит диалоговое окно, на котором написано "is not a valid integer value' . В чём проблема? Без этого:
Код | max:=0; //Memo1.Lines.Add('N1=X(1)'); //вычисляем расстояния от первого ядра до остальных объектов. N2-оъект с мах //расстоянием до первого ядра. for i:=2 to vcount do begin d:=evclid(j,i); if d>max then begin max:=d; number:=i; end; end; x:=StrToInt(StringGrid1.Cells[1,i]); y:=StrToInt(StringGrid1.Cells[2,i]); Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Ellipse(x-5,y-5,x+5,y+5);
|
Работает нормально. Заранее благодарен. |