Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zufallsvariable in Delphi
navarro2010 - So 16.01.11 19:45
Titel: Zufallsvariable in Delphi
Ich habe eine Aufgabe in Delphi zu lösen, bei der man eine Zufallsvariable zwischen 0 und 100 erstellen soll.
Je nach Eingabe soll gezeigt werden, ob die geratene Zahl zu groß, zu klein oder richtig ist.
Das ganze habe ich mit einer if-then else verzweigung gemacht, es kommt trotzdem eine fehlermeldung.
Kann mir jemand einen Tipp geben, oder hat jemand sogar einen Quelltext?
Vielen Dank
Moderiert von
Martok: Topic aus Sonstiges (Delphi) verschoben am So 16.01.2011 um 19:20
HenryHux - So 16.01.11 19:50
Du kannst Zufallszahlen mit random erstellen.
Damit das nicht jedesmal die gleiche ist, benutzt du am besten randomize.
Sähe so aus:
Delphi-Quelltext
1: 2: 3: 4:
| randomize; a := random(100); |
Was klappt denn nicht bzw was ist die Fehlermeldung bzw wie sieht dein Source aus?
Lg
platzwart - So 16.01.11 19:54
Ohne Fehlermeldung und ohne funktionierende Glaskugel wird dir niemand helfen können...
navarro2010 - So 16.01.11 20:19
Mein Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Pa1: TPanel; Edit1: TEdit; Button1: TButton; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; y:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin randomize; y:=random(100); end;
procedure TForm1.Button1Click(Sender: TObject); begin if(random>y) then Pa1.Caption:='Zahl zu klein';
else if (random<y) then Pa1.Caption:='Zahl zu groß'; end else begin Pa1.Caption:='Gewonnen' end; |
Moderiert von
Martok: Delphi-Tags gesetzt
Martok - So 16.01.11 20:22
Hallo!
Bitte verwende für Quellcode die entsprechenden [delphi
]-Tags, dann wird er "schöner" dargestellt als im Fließtext. Beispiel:
Quelltext
1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG30b6d3db2097bf140daf7e6ebfebbabb}</span></span> |
Wird:
Ich hab das mal für dich erledigt, fürs nächste mal dann bitte beachten.
Viele Grüße,
Martok
platzwart - So 16.01.11 20:41
1) Bitte eine ganz genaue Fehlerbeschreibung abgeben.
2) Mit dem Aufruf von 'random' erzeugst du an der jeweiligen Stelle eine neue Zufallszahl, was du wahrscheinlich nicht möchtest. Wie gesagt, bitte sag uns doch, was für ein Problem du hast...
ALF - So 16.01.11 20:48
schau mal genau hin
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); begin if(random>y) then Pa1.Caption:='Zahl zu klein';
else if (random<y) then Pa1.Caption:='Zahl zu groß'; end else begin Pa1.Caption:='Gewonnen' end; |
und für was soll die 'edit' Komponente sein, wenn Du sie nicht als Eingabe der Zahl, die du sicherlich vergleichen willst, auch benutzt!
Vermute ich mal oder?
Gruss Alf
navarro2010 - So 16.01.11 20:50
Das Problem ist, dass wenn ich das Programm ausführe, gibt es nivht den Fall, dass ich richtig rate .
Wenn ich 0 eintippe kommt Zahl zu klein und wenn ich 1 eingebe kommt die Zahl ist zu groß.
ALF - So 16.01.11 20:59
ok Du hast wahrscheinlich nicht alles gelesen oder!?
Und eigentlich müsste das doch gar nicht starten
Delphi-Quelltext
1: 2: 3: 4:
| if(random>y) then Pa1.Caption:='Zahl zu klein'; else if (random<y) then ..... |
Hier ne kleine Hilfe
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); begin y:= random(100); if y > strtoint(edit1.text) then Pa1.Caption:= 'Zahl zu klein' else ..... .....
end; |
und der Rest ergibt sich beim genauen hinschauen :wink:
Gruss ALf
navarro2010 - Mo 17.01.11 21:08
Kann mir noch jemand einen Tipp geben?
Es kommt nicht, dass man gewonnen hat
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Pa1: TPanel; Edit1: TEdit; Button1: TButton; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; y:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin randomize; y:=random(100); end;
procedure TForm1.Button1Click(Sender: TObject); begin y:= random(100); if y > strtoint(Edit1.Text) then Pa1.Caption:= 'Zahl zu klein' else if y < strtoint(Edit1.Text) then Pa1.Caption:= 'Zahl zu groß' else Pa1.Caption:= 'Gewonnen'
end; end. |
HenryHux - Mo 17.01.11 21:10
Haha, überleg dir mal kurz weswegen dir hier :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| y:= random(100); if y > strtoint(Edit1.Text) then Pa1.Caption:= 'Zahl zu klein' else if y < strtoint(Edit1.Text) then Pa1.Caption:= 'Zahl zu groß' else Pa1.Caption:= 'Gewonnen' |
Nicht immer Gewonnen angezeigt wird :lol:
EDIT:
Ich glaube ich verstehe wo wirklich dein Problem ist. Du versucht wahrscheinlich, anhand der Tipps die richtige Zahl zu suchen.
Dann musst du aber das random rausnehmen, denn das generiert jedes mal eine neue Zahl =)
navarro2010 - Mo 17.01.11 21:15
Ich weiß nicht warum nicht gewonnen angezeigt wird, vielleicht kannst du mir weiterhelfen?
HenryHux - Mo 17.01.11 21:27
Ja, du willst bei jedem Button-Click die Zahl raussuchen.
Aber bei jedem Button-Click generiert sich eine neue Zahl, deswegen steht jedesmal die Chance 1 zu 100, dass gewonnen angezeigt wird.
Also versuchst du es entweder den halben Abend, oder du legst das generieren der Zahl auf einen anderen Button =)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!