Delphi-PRAXiS
Seite 1 von 7  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordung muss sein (https://www.delphipraxis.net/9742-ordung-muss-sein.html)

block35plus1 2. Okt 2003 21:22


Ordung muss sein
 
Hi erst mal.
habe mcih gerade angemeldet. Ich hab seit einem JAhr Informatik in der Schule, wir machen eigentlich nur Delphi. Da ich im ersten Jahr garr nix verstanden habe und 5 stand will cih jetzt versuchen alles nachzuholen. :wall: ich hab auhc gemerkt dass es ein bisschen spaß macht. aber ich habe jetzt eine frage zu meinen Hausaufgaben.

Wir haben ein Lottoprogramm geschrieben, welches 6 zufällige Zahlen von 1 bis 49 zieht. als Hausaufgabe sollten wir u.a. versuchen. die Zalhen im MemoFeld zu ordnen und das keine gleichen ZTahlen vorkommen. Das habe ich bisher:


Delphi-Quellcode:
unit mLotto;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
TLottozahlen=array[1..6] of Integer;
  TForm1 = class(TForm)
    MemAusgabe: TMemo;
    btnZiehen: TButton;
    procedure btnZiehenClick(Sender: TObject);
  private
    { Private-Deklarationen}
  public
    { Public-Deklarationen}
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BtnZiehenClick(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   randomize;
   for i:=1 to 6 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 6 do
   MemAusgabe.Lines.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;

end.



Danke Tobias

[edit=MrSpock]Code Tags eingefügt. Mfg, MrSpock[/edit]

Duffy 2. Okt 2003 21:32

Re: Ordung muss sein
 
Hallo block35plus1,
schau Dir mal diesen Beitrag an, er sollte Dir helfen
Hilfe bei nem Algorythmus
bye

MrSpock 2. Okt 2003 21:47

Re: Ordung muss sein
 
Hallo Block35plus1,

wenn du auch eine Listbox benutzen darfst, sparst du dir eine Menge Arbeit.
(Ob das aber deine Informatiknote nach oben bringt, weiß ich nicht :mrgreen: )

Eine Listbox hat nämlich die Eigenschaft Sorted, die du nur auf True stellen musst.
Wichtig ist aber dann, dass du die einstelligen Zahlen mit führender Null schreiben muss.

Delphi-Quellcode:
 procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
    { ListBox1.Sorted im OI auf True setzen. }
     for i:=1 to 6 do
       ListBox1.Items.Add(Format('%.2d', [Lottozahlen[i]]));
   end;

block35plus1 2. Okt 2003 22:12

Re: Ordung muss sein
 
wo kann ich die denn genau auf null stellen und wie mach ich das genau, dass vor den einstelligen eine Null steht?

MrSpock 2. Okt 2003 22:16

Re: Ordung muss sein
 
Hallo Block35plus1,

wie oben im Code gezeigt mit der Format Funktion.

block35plus1 2. Okt 2003 22:18

Re: Ordung muss sein
 
:gruebel: mhh ich muss ernsthaft sagen, dass ich nur bahnhof verstehe. aber ich finde es total nett, dass ihr mir helfen wollt... :cheers:

Christian Seehase 2. Okt 2003 22:19

Re: Ordung muss sein
 
Moin block35plus1,

mal eine Frage zum Zahlen_ermitteln.
Ist es gewollt, dass Zahlen doppelt gezogen werden können?

block35plus1 2. Okt 2003 22:22

Re: Ordung muss sein
 
ne dass ist nciht gewollt. da´habe ich aber schon eine Lösung für Zahlen_ermitteln, aber die Lösung für Zahlen_ausgeben fehlt :(

Delphi-Quellcode:
var i,j,Zahl : Integer;
   begin Randomize;
   for i := 1 to 6 do
   begin
   zahl := random (49)+1;
   j := 1;
   while j<i do
   begin
   if Lottozahlen[j] = zahl
   then begin
   zahl := random (49)+1;
   j:=0;
   end;
   j:=1+1;
   end;
   Lottozahlen[i]:=zahl;
   end;
   end;
[edit=Christian Seehase]Delphi-Tags hinzugefügt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Christian Seehase 2. Okt 2003 22:29

Re: Ordung muss sein
 
Moin block35plus1,

Mal eine Variante dazu. Ist aber ungetestet.

Delphi-Quellcode:
Procedure Zahlen_ermittelnOHNEDoppelte(var Lottozahlen:TLottozahlen);
var
  i      : integer;
  iZahl  : integer;
  iCount : integer;
  fExists : boolean;

begin
  randomize;
  for i := 1 to 6 do Lottozahlen[i] := 0;
  iCount := 6;
  while iCount > 0 do begin
    iZahl  := Random(49)+1;
    fExists := false;
    for i := 1 to 6 do begin
      if Lottozahlen[i] = iZahl then begin
        fExists := true;
        break;
      end;
    end;
    if not fExists then begin
      Lottozahlen[iCount] := iZahl;
      dec(iCount);
    end;
  end;
end;

MrSpock 2. Okt 2003 22:30

Re: Ordung muss sein
 
Hallo Block35plus1,

zum Thema Bahnhof :mrgreen: :

Die Funktion Format ermöglicht das Formatieren von Zahlen oder Strings für die Ausgabe. Schau dir dazu vielleicht einmal die Onlinehilfe an.
Der Code oben:

Delphi-Quellcode:
Format('%.2d', [Lottozahlen[index]])
gibt einen String zurück, der die Zahl (Lottozahl[index]) immer zweistellig zurück gibt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr.
Seite 1 von 7  1 23     Letzte »    

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