![]() |
Re: Zufallsvariable
Ja klappt auch soweit aber die zu erratenen zahl ist immer 0!!
auch wenn ich das Projekt schließe und dann nochmal starte. Muss das so sein? |
Re: Zufallsvariable
Poste mal deinen gesamten Quelltext. Bei mir kommen nach jedem Neustart des Programms neue Zufallszahlen heraus ...
Du darfst die Initialisierung des Zufallsgenerator, durch den Aufruf von der Prozedur Randomize nicht vergessen! |
Re: Zufallsvariable
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); public z : integer; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var r : real; begin r := StrToFloat(Edit1.Text); if r < z then Label2.Caption := 'Zu niedrig' else if r > z then Label2.Caption := 'Zu hoch' else if r = z then Label2.Caption := 'Erraten'; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; z := random(100)+1; end; end. |
Re: Zufallsvariable
Wieso vergleichst Du ganze mit Fließkommazahlen?
|
Re: Zufallsvariable
Warum? Ist das falsch?
Wenn ja wie mach ichs anders?? |
Re: Zufallsvariable
Hier mal ein schnell runtergetipptes Beispielprojekt (implementation-Teil):
Delphi-Quellcode:
uses Math;
procedure TfrmRaten.btnRatenClick(Sender: TObject); var Ratezahl: Integer; begin Ratezahl := StrToIntDef(edtEingabe.Text,0); case Sign(Ratezahl - Zahl) of 0: ShowMessage('Erraten'); 1: ShowMessage('Zu hoch'); -1: ShowMessage('Zu niedrig'); end; edtEingabe.SetFocus; edtEingabe.SelectAll; end; procedure TfrmRaten.FormCreate(Sender: TObject); begin Randomize; Zahl := Random(100) + 1; end; |
Re: Zufallsvariable
@Hans33: Wenn die zu erratende Zahl eine ganze Zahl sein sollte, wieso solltest du dann dem Benutzer erlauben, eine Fließkommazahl einzugeben? Wenn der Benutzer 9.5 eingibt, ist das schlicht und einfach ein falscher Wert. Das ist genau so, wie wenn er "a" eingibt, ist auch falsch.
StrToIntDef aus dem vorherigen Post wandelt eine ungültige Eingabe in 0 um und somit erhält der Benutzer keine Fehlermeldungen bei einer Kommazahl oder einem nicht-numerischen Wert. |
Re: Zufallsvariable
Macht sich bloß dumm, wenn der Benutzer dann nicht darauf hingewiesen wird, das er eine falsche Eingabe macht und immer weiter macht ...
Ich glaube aber das Grundproblem ist hier einfach das Verständnis, weswegen man nicht unbedingt eine Abfrage der Benutzereingabe machen sollte. |
Re: Zufallsvariable
Wer so blöd ist, beim Zahlenraten ein "a" oder sowas einzugeben, hat es nicht besser verdient :twisted:
|
Re: Zufallsvariable
was ist dann falsch?
Ich kann kein denkfehler erkennen!
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); public z :integer; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin randomize; z := random(50)+1; end; procedure TForm1.Button1Click(Sender: TObject); var r : real; begin r := StrTofloat(edit1.Text); if r < z then Label2.Caption := 'Zu niedrig' else if r > z then Label2.Caption := 'Zu hoch' else if r = z then Label2.Caption := 'Erraten'; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 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