Avatar billede jgthb Nybegynder
25. juni 2007 - 00:58 Der 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.

Håber en kan hjælpe.

Mvh
Jonathan
Avatar billede jgthb Nybegynder
25. juni 2007 - 01:18 #1
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.
Avatar billede arne_v Ekspert
25. juni 2007 - 01:22 #2
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
Avatar billede jgthb Nybegynder
25. juni 2007 - 02:02 #3
Så må jeg bruge den løsning. Her er resultatet:

"
var
Tal: array [1..36] of Integer;

...

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;
"
Avatar billede jgthb Nybegynder
25. juni 2007 - 02:06 #4
I praksis skal de to linjer efter randomize selvfølgelig ikke være der. Jeg lavede det bare i en seperat applikation
Avatar billede arne_v Ekspert
25. juni 2007 - 02:13 #5
Du behøver ikke 2 gennemløb - du kan godt gøre det med 1 gennemløb.
Avatar billede jgthb Nybegynder
25. juni 2007 - 02:17 #6
hvad mener du med gennemløb?
Avatar billede arne_v Ekspert
25. juni 2007 - 02:19 #7
2 løkker
Avatar billede jgthb Nybegynder
25. juni 2007 - 02:19 #8
Den første løkke er bare for at få nogle tal i min array.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Capgemini Danmark A/S

IGNITE Graduate Program 2026

Netcompany A/S

Test Consultant

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations