![]() |
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] |
Re: Ordung muss sein
Hallo block35plus1,
schau Dir mal diesen Beitrag an, er sollte Dir helfen ![]() bye |
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; |
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?
|
Re: Ordung muss sein
Hallo Block35plus1,
wie oben im Code gezeigt mit der Format Funktion. |
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:
|
Re: Ordung muss sein
Moin block35plus1,
mal eine Frage zum Zahlen_ermitteln. Ist es gewollt, dass Zahlen doppelt gezogen werden können? |
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:
[edit=Christian Seehase]Delphi-Tags hinzugefügt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
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; |
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; |
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:
gibt einen String zurück, der die Zahl (Lottozahl[index]) immer zweistellig zurück gibt.
Format('%.2d', [Lottozahlen[index]])
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz