AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallsvariable

Offene Frage von "Hans33"
Ein Thema von Hans33 · begonnen am 21. Nov 2008 · letzter Beitrag vom 22. Nov 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Hans33

Registriert seit: 13. Nov 2008
56 Beiträge
 
Turbo Delphi für Win32
 
#1

Zufallsvariable

  Alt 21. Nov 2008, 22:56
Hallo,

hab eine Frage.
Ich möchte ein Zahlenrätsel zum Einstieg in die Spieleprogrammierung machen.
Hab Turbo Delphi.

Soweit bin ich gekommen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var z:0..50; var r:Real;
begin
r:=strtofloat(edit1.Text);
If r<z Then
begin
Label2.Caption:='Die Zahl ist zu klein';
end;
If r>z Then
begin
Label2.Caption:='Die Zahl ist zu groß';
end;
If z=r Then
begin
Label2.Caption:='Richtig!!';
end;

Die Lösungszahl ist immer 112. Das ist das Problem
Danke für Hilfen!
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Zufallsvariable

  Alt 21. Nov 2008, 23:20
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  r: real;
  i: Integer;
begin
  Randomize;
  for i := 0 to 50 do
    begin
      r := Random(51);
      ListBox1.Items.add('Zahl: ' + FloatToStr(r));
    end;
end;
Randomize sollte nur ein mal aufgerufen werden. Random(51) erzeugt Zahlen zwischen 0 und 50 (einschließlich der Grenzen).
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Zufallsvariable

  Alt 21. Nov 2008, 23:25
Hallo,

bei mir ist die Lösung immer 0!

Es wird eben die Zahl genommen, die zufällig in z steht - bis du einen sinnvollen Wert dort einträgst.

Gruß Hawkeye
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Zufallsvariable

  Alt 22. Nov 2008, 00:50
Hallo.

Soll das Zahlenrätsel wirklich Real-Zahlen abfragen? Das wären dann Zahlen mit Komma. Oder möchtest du Integer-Zahlen, also ganzzahlige Werte? Bei den Real-Zahlen musst du darauf achten, dass du das amerikanische Komma, den Punkt nimmst.

Außerdem ist die Notation "var z:0..50;" falsch. Was willst du damit genau aussagen?

Als erstes müsstest du z einen gültigen Typen zuweisen, z.B. Integer:

var z: integer; und dann müsstet du im Code irgendwo z definieren/initialisieren.

Ich glaube in diesem Falle meinst du

z := Random(51); In diesem Falle wäre Random aber nur für ganzzahlige Zahlen gültig! Deswegen irritiert mich, dass du diese mit einem Fließkommawert vergleichen willst.

Möchtest du eine zufällige Kommazahl mit 2 Nachkommastellen, könntest du sowas machen:

Delphi-Quellcode:
var z: real;

z := Random(51 * 100) / 100
Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Zufallsvariable

  Alt 22. Nov 2008, 01:17
Hallo Daniel,

Zitat von blackdrake:
Außerdem ist die Notation "var z:0..50;" falsch.
Nein, das ist eine gültige Notation. Sie besagt, dass die Variable z ganzzahlige Werte im Bereich 0..50 aufnehmen kann. Wenn zur Laufzeit ein Wert außerhalb dieses Bereichs zugewiesen wird, dann erhält man bei eingeschalteter Bereichsprüfung eine Exception.

Gruß Hawkeye
  Mit Zitat antworten Zitat
22. Nov 2008, 08:16
Dieses Thema wurde von "SirThornberry" von "Windows API / MS.NET Framework API" nach "Object-Pascal / Delphi-Language" verschoben.
Hans33

Registriert seit: 13. Nov 2008
56 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zufallsvariable

  Alt 22. Nov 2008, 10:59
Hi

bin jetzt nicht wirklich schlau daraus geworden.
Ich möchte nur eine Zahl in mein Edit-Feld eingeben. Die Zufallsvariable soll eine ganze Zahl zwischen 1 und 50 sein
also r:=Random(51) r muss dazu doch eine ganze Zahl sein
also r:Integer; aber was muss dann die zahl, die ich in das Edit-Feld einege sein? Integer oder Real? Eigentlich doch Integer da r auch Integer ist?!?!
dann bin ich auf das gekommen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var z,r:Integer;
begin
 r:=strtoint(edit1.Text);
 z:=Random(51);
 If r<z Then
  begin
   Label2.Caption:='Die Zahl ist zu klein';
  end;
 If r>z Then
  begin
   Label2.Caption:='Die Zahl ist zu groß';
  end;
 If z=r Then
  begin
   Label2.Caption:='Richtig!!';
  end;
 end;
end.
aber dann ist die Lösungszahl zwischen 10 und 11, asber wenn ich dann 9,5 oder 9.5 eingebe kommt eine Fehlermeldung!!

was nun??
  Mit Zitat antworten Zitat
Hans33

Registriert seit: 13. Nov 2008
56 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Zufallsvariable

  Alt 22. Nov 2008, 11:03
Die Zufalls variable ändert sich auch bei jedem Button-Klick was natürlich nicht sein sollt sonst kann man ja die Zahl nie eraten
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Zufallsvariable

  Alt 22. Nov 2008, 11:10
Sicher, weil du bei StrToInt keine Gleitkommazahlen verwenden kannst, sondern ganzzahlige Werte brauchst.
Nun versteh ich auch inwiefern du das machen willst

Einfach dann die Zufallsvariable im FormCreate zuweisen und die Abfrage mit der Eingabe im ButtonClick-Ereignis.

Delphi-Quellcode:
  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); //Gleitkommawert von Eingabe r zuweisen

       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(50)+1; //Zufallszahl im Bereich 1-50
end;
Edit: Stimmt, hatte das einfach den Vorpostern entnommen ^^
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Zufallsvariable

  Alt 22. Nov 2008, 11:15
Btw: Eine Zufallszahl im Bereich 1 bis 50 bekommt man mit Random(50) + 1.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
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