Jo, měl jsem to hodně zmotaný...právě v tom poli a jeho indexech. já to změnil ještě, než jsem si to přečetl od tebe
Mě napadlo, že sice používám ty šikovné operátory pro inkrementaci podle tebe, ale že nejspíš nejdou použít pro dvojrozměrné pole, když nebude vědět jakou hodnotu z těch dvou indexu po něm žádám. Tak jsem to upravil a hlavně jsem si všiml, že v té funkci pro hledání vzdáleností nemám pro n přiřazenou žádnou hodnotu...a já to celou dobu přes něj zkoušel (achjo) ...i to jsem tam dodal, a teď to běží... samozřejmě je to pořád asi dost zbastlený, ale já mám hlavně radost, že to sype výsledky :))
Takže už mi to jde i s tím mým konstantním polem (vlastně jsem nikdy nepochopil, proč je zadaný konstantama, ale můžu do něj ukládat víc hodnot, než je právě velikost toho pole...jen si musím dávat pozor, že když jich zadám méně, tak se ve zbytku objevují nuly...nj vlastně je to dost nešikovný, ale já nevím, jestli se tím mám ještě zabývat, moc času mi nezbývá)...popravdě jiný, než s tou konstantou, neumím :) dynamický jsem se neučil
Takže díky za všechny ty tipy, vezmu si to k srdci a zkusim to podle toho trochu vyladit. Pomohl jsi mi!
P.S.: nevim, jestli je to možny, ale zatim jsem to vyřešil takhle intuitivně (funguje to):
Function NejblizsiVzdalenost (Pole : Tpole; out PrvniIndex, DruhyIndex : integer):double;
var
j,k : integer;
Vzdalenost : double;
begin
n := StrToInt (frmHlavni.edtPocet.text);
PrvniIndex := -1;
DruhyIndex := -1;
Result := MaxInt;
for j := Low(Pole[j]) to Pred(n) do
for k := Succ(j) to High(Pole[j]) do
begin
vzdalenost := sqrt(sqr(Pole[1,j]-Pole[1,k])+sqr(Pole[2,j]-Pole[2,k]));
if vzdalenost < Result then
begin
Result := vzdalenost;
PrvniIndex := j;
DruhyIndex := k;
end;
end;
end;