Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe bei nem Algorythmus (https://www.delphipraxis.net/7975-hilfe-bei-nem-algorythmus.html)

Reloaded 26. Aug 2003 00:38


Hilfe bei nem Algorythmus
 
Hiho, ich bin Reloaded und relativer Delphinoob.

Habe da ein Problem. Brauche nen Algorythmus der 7 zufällige Zahlen miteinander vergleicht, und wenn eine Zahl doppelt vorkommt, der diese in ne andere zufällige Zahl umändert. Das heißt am Ende sollen halt 7 verschiedene Zahlen rauskommen. Habs den ganzen Abend probiert und es ums verrecken nicht hinbekommen. Wäre nett wenn mir jemand mir helfen könnte. :) Sorry wenns ne Noobfrage ist, aber alle Ansätze von mir funzen leider nicht.

Luckie 26. Aug 2003 00:45

Re: Hilfe bei nem Algorythmus
 
OK. Hier ein Ansatz:
Du schreibst dir eien Funktion, die dir eine Zufallszahl zurückliefert. Diese trägst du nun in ein Array mit 7 elementen ein, doch bevor du dies tust, durchläufst du das Array und kuckst, ob sie nicht schon vorhanden ist. Ist sie schon vorhanden, rufst du deine Funktion für die Zufallszahlen noch mal auf, ist sie nicht vorhanden, trägst du sie ein.

Duffy 26. Aug 2003 06:26

Re: Hilfe bei nem Algorythmus
 
Hallo Reloaded,
ist es sowas, was Du suchst?
Delphi-Quellcode:
procedure CreateRandomNumbers(var A: array of Integer;
                              HighNumber: Integer = 49;
                              ZeroNumber: Boolean = False);
var
  I: Integer;

  function CheckDouble(const A: array of Integer; Position: Word): Boolean;
  var
    I: Integer;
  begin
    Result := False;
    for I := Low(A) to High(A) do
    begin
      if I = Position then
        Continue;
      if A[I] = A[Position] then
      begin
        Result := True;
        Break;
      end;
    end;
  end;

begin
  ZeroMemory(@A, SizeOf(A));
  for I := Low(A) to High(A) do
  begin
    if ZeroNumber then
      repeat
        A[I] := Random(HighNumber) + 1;
      until not CheckDouble(A, I)
    else
      repeat
        A[I] := Random(HighNumber) + 1;
      until (A[I] <> 0) and (not CheckDouble(A, I));
  end;
end;
"Randomize" sollte vor dem Aufruf der Funktion erfolgen.
bye

Tpercon 26. Aug 2003 08:08

Re: Hilfe bei nem Algorythmus
 
Letzte Woche hattten wir die selbe Frage schonmal von jemand anders, begib dich mal auf die Suche. Läuft aber auf den Weg von Luckie hinaus.

Matze 26. Aug 2003 08:18

Re: Hilfe bei nem Algorythmus
 
Hier ist der Link, den Tpercon gemeint hat. Dann musst du nicht danach suchen. :zwinker:

http://www.delphipraxis.net/internal...=zufallszahlen

Gruß Matze

Reloaded 26. Aug 2003 11:01

Re: Hilfe bei nem Algorythmus
 
Danke für die Hilfe, ich bastel dann mal weiter. :P

Nachtrag:So hab hier ne ganz leichte Lösung da das mit den Arrays bei mir nicht so geklappt hat, bissel umständlich aber egal :mrgreen::
Delphi-Quellcode:
begin
repeat
random;
Zahl1 := Random(48 )+1;
Label1.Caption := InttoStr(Zahl1);
Zahl2 := Random(48 )+1;
Label2.Caption := InttoStr(Zahl2);
Zahl3 := Random(48 )+1;
Label3.Caption := InttoStr(Zahl3);
Zahl4 := Random(48 )+1;
Label4.Caption := InttoStr(Zahl4);
Zahl5 := Random(48 )+1;
Label5.Caption := InttoStr(Zahl5);
Zahl6 := Random(48 )+1;
Label6.Caption := InttoStr(Zahl6);
Zahl7 := Random(48 )+1;
Label7.Caption := InttoStr(Zahl7);
Ungleichheit:=True;

//Zahl1
if Zahl1 = Zahl2
then Ungleichheit := False;
if Zahl1 = Zahl3
then Ungleichheit := False;
if Zahl1 = Zahl3
then Ungleichheit := False;
if Zahl1 = Zahl4
then Ungleichheit := False;
if Zahl1 = Zahl5
then Ungleichheit := False;
if Zahl1 = Zahl6
then Ungleichheit := False;
if Zahl1 = Zahl7
then Ungleichheit := False;

//Zahl2
if Zahl2 = Zahl3
then Ungleichheit := False;
if Zahl2 = Zahl4
then Ungleichheit := False;
if Zahl2 = Zahl5
then Ungleichheit := False;
if Zahl2 = Zahl6
then Ungleichheit := False;
if Zahl2 = Zahl7
then Ungleichheit := False;

//Zahl3
if Zahl3 = Zahl4
then Ungleichheit := False;
if Zahl3 = Zahl5
then Ungleichheit := False;
if Zahl3 = Zahl6
then Ungleichheit := False;
if Zahl3 = Zahl7
then Ungleichheit := False;

//Zahl4
if Zahl4 = Zahl5
then Ungleichheit := False;
if Zahl4 = Zahl6
then Ungleichheit := False;
if Zahl4 = Zahl7
then Ungleichheit := False;

//Zahl5
if Zahl5 = Zahl6
then Ungleichheit := False;
if Zahl5 = Zahl7
then Ungleichheit := False;

//Zahl6
if Zahl6 = Zahl7
then Ungleichheit := False;

until Ungleichheit;
end;
[edit=Luckie]Quote-Tags durch Delphi-Tags ersetzt. Mfg, Luckie[/edit]

Duffy 26. Aug 2003 13:12

Re: Hilfe bei nem Algorythmus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
jetzt noch einmal mit Beispielprogramm ...
bye

Tpercon 26. Aug 2003 13:20

Re: Hilfe bei nem Algorythmus
 
Zitat:

Zitat von Reloaded
Zitat:

begin
repeat
random;
Zahl1 := Random(48 )+1;
False;

until Ungleichheit;
end;

Was soll das random; am Anfang? Das bringt doch da garnichts.
Wo lag denn das Problem bei den Arrays? Ist ja so echt viel zu umständlich.

Reloaded 26. Aug 2003 14:38

Re: Hilfe bei nem Algorythmus
 
Keine Ahnung. Hab ich so im Infokrus gelernt, aber wenn man es nicht braucht. Auch gut. MIt den Arrays hat irgendwie nicht gefunzt. Der hatte mir da immer massig Fehlermeldungen reingekloppt.

Tpercon 26. Aug 2003 14:46

Re: Hilfe bei nem Algorythmus
 
Randomize solltest du beim Start (Form Create) einmal aufrufen!
Dann fang mal an mit den Fehlermeldungen! Da wird dir sicherlich auch geholfen, diese Lösung ist ja nicht wirklich zumutbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz