25. juni 2007 - 00:58Der er
7 kommentarer og 1 løsning
mindste tal array
Hej
Jeg har følgende array:
TalInd: array [1..36] of Integer;
Og i hvert felt er der et tal mellem 1 og 20. Jeg vil nu finde ud af, hvilke(t) array der indeholder det mindste tal. Herefter skal en af disse array vælges tilfældigt.
Jeg har selv et forslag, men det er ret besværligt, synes jeg:
Først findes det mindste tal uden hensyn til, hvor det ligger. Herefter bestemmes de(t) array, som indeholder det tal. Man kan så lave en stringliste, hvor de bestemte arrayfeltnumre noteres på hver sin linje, og en tilfældig linje vælges da.
Jeg antager at du skal finde elementer ikke arrays ...
Jeg tror ikke at der er mange muligheder for optimering: 1) du løber igennem hele arrayet en gang og finde det mindste tal - samtidigt gemmer du index til dette (du nulstiller når du finder et nyt mindste tal) 2) du trækker et tilfældigt tal op til antal fundne element index og bruger det udtrukne element index
function TForm1.GetMin (Value: array of Integer): Integer; var Min: Integer; I: Integer; begin Min := Value[0]; for I := Succ(Low(Value)) to High(Value) do if Value[I] < Min then Min := Value[I]; Result := Min; end;
procedure TForm1.Button1Click(Sender: TObject); var StringList: TStringlist; I,J, Minimum: Integer; begin Randomize; For J:=1 to 36 do Tal[J]:=Random(36)+1; Minimum := Getmin(Tal); StringList := TStringList.Create; For I:=1 to 36 do begin If Tal[I]=Minimum then Stringlist.Add(IntToStr(I)); end; Showmessage(StringList[Random(StringList.Count)]); FreeAndNil(StringList); end; "
Den første løkke er bare for at få nogle tal i min array.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.