Dobrý den,
dělám doma semestrálku v Delphi a trošku si nevím rady, jakou část mám upravit. Má to být program, který vygeneruje do pole n souřadnic bodů v rovině (x,y), a potom má porovnat jejich vzdálenosti a najít tu nejmenší ze všech. Něco jsem už udělal, ale pořád mi to dělá pouze kombinaci posledního bodu s ostatníma - což je mi trochu divný. Jak je vidět v tom zdrojáku snažil jsem se tam nějak zavést dva cykly a myslel jsem že budou pracovat oba současně, ale pak se ukázalo, že to udělá jen inkrementaci pro i, jenže to j se pak načte asi jen jako největší i...promiňte, moc tomu ještě nerozumím, takže nevím, jestli je to možné. Došel jsem k tomu, když jsem si nechal vypisovat indexy, pro které to danou vzdálenost vypočítá, a ono to napíše vždy poslední, respektive ještě větší o jedničku, ale to tam mám chybu...poprosil bych o radu, třeba jen info jak udělat dva cykly kde jeden běží od začátku v tom prvním...(pozn. prvně jsem měl místo cyklu while prostě jen for i:=1 to n-1)
procedure NahodneGeneruj (var Pole:Tpole; sgpole : TStringGrid; n : integer);
var
Minimum, maximum : integer;
i,j : integer;
MinVzdalenost : real;
Vzdalenost : real;
PrvniIndex, DruhyIndex : integer;
a : integer;
begin
Randomize;
n:= StrToInt (frmHlavni.edtPocet.text);
Minimum := StrToInt (frmHlavni.edtMIN.text);
Maximum := StrToInt (frmHlavni.edtMAX.text);
sgPole.ColCount := 2;
sgPole.RowCount := n;
for i := 1 to 2 do
for j := 1 to n do
Pole [i,j] := RoundTo (Minimum + Random* (Maximum-Minimum),-2);
for i := 0 to n do
for j := 0 to 2 do
begin
sgPole.Cells[j,i] := FloatToStr(Pole[j+1,i+1]);
end;
begin
minVzdalenost := MaxInt;
i:=1;
while i<=(n-1) do
begin
for j:= i+1 to n do
vzdalenost := sqrt(sqr(Pole[1,i]-Pole[1,j])+sqr(Pole[2,i]-Pole[2,j]));
if vzdalenost < minVzdalenost then
minVzdalenost := vzdalenost;
if vzdalenost = minVzdalenost then
PrvniIndex := i;
DruhyIndex := j;
i:=i+1 ;
end;