Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zählschleife Auswertung der Zufallszahlen (https://www.delphipraxis.net/93473-zaehlschleife-auswertung-der-zufallszahlen.html)

Michu 6. Jun 2007 12:54


Zählschleife Auswertung der Zufallszahlen
 
Hallo erstmal,

habe eine zählschleife programmiert und es auch hinbekommen das ich zufallszahlen über button klick in einem label angezeigt bekomme, jetzt würd ich noch gern im gleichen label über eine weitere "function auswertung" die zahlen auswerten d. h. ich möchte wissen wie oft kam die eins, die zwei ... usw. kriegs aber irgendwie nit hin, hatte es erst über while-schleife versucht ging nicht, dann über if-schleife... hm kann mir vielleicht nen tipp geben?


[edit=Matze]Das ist wohl eher ein Win32- als ein .NET-Thema. ;) Mfg, Matze[/edit]

GTA-Place 6. Jun 2007 12:57

Re: Zählschleife Auswertung der Zufallszahlen
 
http://www.php-faq.de/q/q-terminologie-if.html

Nimm ein Array[1..10] of Integer.

ibp 6. Jun 2007 13:18

Re: Zählschleife Auswertung der Zufallszahlen
 
erstmal herzlich willkommen bei dp! :dp:

welcher art sind deine zufallszahlen, wie groß ist der bereich den diese abdecken?

danach kann man denn entscheiden wie man diese zählt!

grundsätzlich ist aber der ansatz von gta-place nicht schlecht und immerhin ein erster schritt sich zu weiter zu informieren, zur not mit der such-funktion hier im forum!

also viel spass

wenn dann noch fragen sind hier posten!

DP-Maintenance 6. Jun 2007 14:10

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "Object-Pascal / Delphi-Language" verschoben.

Michu 6. Jun 2007 17:17

Re: Zählschleife Auswertung der Zufallszahlen
 
hallo stelle mal mein programm ein, der datentyp ist integer
hoffe das ist nicht zuviel, danke für eure hilfe


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Li_zufa: TListBox;
    B_zuf: TButton;
    B_loeschen: TButton;
    procedure feld_fuellen;
    procedure feld_anzeigen;
    procedure B_zufClick(Sender: TObject);
    procedure B_loeschenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    z:array[1..100]of integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.feld_fuellen;
var i:integer;
begin

      for i:=1 to 100 do z[i]:= random (6)+1;
     
end;

procedure TForm1.feld_anzeigen;
var i:integer;
begin

    for i:=1 to 100 do Li_zufa.items.Add(inttostr(z[i]));

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize

end;
procedure TForm1.B_zufClick(Sender: TObject);
var i:integer;
begin

feld_fuellen;
feld_anzeigen;

end;

procedure TForm1.B_loeschenClick(Sender: TObject);
begin
//Liste löschen
Li_zufa.items.clear;

end;



end.
[edit=Matze][delphi]-Tags gesetzt. Zukünftig bitte selbst erledigen. Mfg, Matze[/edit]

Michu 6. Jun 2007 17:20

Re: Zählschleife Auswertung der Zufallszahlen
 
bin halt anfängerin und habe lange in der schule gefehlt wegen krankheit, das was ich mir selbst erarbeitet habe geht mittlerweile zu programmieren aber es ist schon ganz schön schwer... wie eine neue sprache lernen :shock:

shmia 6. Jun 2007 17:30

Re: Zählschleife Auswertung der Zufallszahlen
 
Du hast ja nur Zufallszahlen von 1 bis 6 (Würfel).
Also ein Array nehmen:
Delphi-Quellcode:
Zaehler_feld:array[1..6] of integer;
...
for i := 1 to 100 do
begin
   zzahl := z[i];
   if (zzahl >= 1) and (zzahl <= 6) then // Sicherheitsabfrage
      Zaehler_feld[zzahl] := Zaehler_feld[zzahl] +1
   else
      ; // Fehler, dürfte nie vorkommen
end;

Michu 8. Jun 2007 07:31

Re: Zählschleife Auswertung der Zufallszahlen
 
ich danke dir total. brauch aber wieder hilfe bitte bitte

ich habs wirklich probiert mit deinem kriegs aber nicht hin, habe jetzt was anderes probiert aber läuft immer noch nicht
Delphi-Quellcode:
procedure TForm1.zaehler_feld;
var i:integer;
    zzahl,eins,zwei,drei,vier,fuenf,sechs:integer;
    zaehler_feld: array [1..6] of integer;
begin

for i:= 1 to 100 do begin
    zzahl:= z[i];
    eins:=0;
    zwei:=0;
    drei:=0;
    vier:=0;
    fuenf:=0;
    sechs:=0;
    if (zzahl=1)then begin
        inc(eins)
        end;
    if (zzahl=2)then begin
        inc(zwei)
        end;
    if (zzahl=3)then begin
        inc(drei)
        end;
    if (zzahl =4) then begin
        inc (vier)
        end;
    if (zzahl=5)then begin
        inc(fuenf)
        end;
    if(zzahl=6)then begin
        inc(sechs)
        end;

Li_zufa.Items.Add( inttostr(eins)+'mal die 1') ;

end;
[edit=Matze][delphi]-Tags repariert. Mfg, Matze[/edit]

Matze 8. Jun 2007 07:35

Re: Zählschleife Auswertung der Zufallszahlen
 
Hallo,

was klappt denn nicht bei shmias Code? Kommen Fehlermeldungen? Denn einfacher kann man es kaum lösen.

Sharky 8. Jun 2007 08:32

Re: Zählschleife Auswertung der Zufallszahlen
 
Hai Michu,

was mir an deinem Code als erstes auffällt ist, das Du in deiner For-Do-Schleife die Variablen eins, zwei usw. immer wieder auf Null setzt. Als Ergebniss kann also maximal eine der Variablen den Wert 1 haben.

Michu 8. Jun 2007 09:52

Re: Zählschleife Auswertung der Zufallszahlen
 
hm ich glaube ich kriege es einfach nicht umgesetzt.. :oops: bin doch anfänger, kann das noch nicht so gut mit dem rekursiven programmieren,

Matze 8. Jun 2007 09:55

Re: Zählschleife Auswertung der Zufallszahlen
 
Mit Rekursion hat dies nichts zu tun, du löst das momentan iterativ. ;)

Zeige uns doch bitte, wie du shmias Code eingebunden hast, denn dieser sollte funktionieren. Und Sharky meint, dass du die Initialisierung der Variablen vor der Schleife durchführen musst.

Michu 8. Jun 2007 10:05

Re: Zählschleife Auswertung der Zufallszahlen
 
hey das kenn ich newtonsches näherungsverfahren :)
also hab das ding so genommen wie ist und neue prozedur erstellt, ich musste mich danach dazu vorkämpfen wie schaff ich es das ergebnis auszugen, egal ob sinnvoll oder nicht aber ich wußte nicht woher das ergebnis kommt,

achso noch ne frage, bei shmia wir da die funktion nicht in sich selbst noch mal aufgerufen?

habe jetzt in dem prog von mir die variablen vor die schleife gestellt aber immer noch ganz komische ergebnisse, ich probier jetzt noch mal was

Michu 8. Jun 2007 10:14

Re: Zählschleife Auswertung der Zufallszahlen
 
so wie ich es einbinden wollte hab ich leider gelöscht... ich kriegs nicht hin.. schreib montag klausur ist zwar nur wp aber schlecht will ja trotzdem nicht sein, da ist dann halt noch der ehrgeiz, war gestern schon zwo std. dran, und jetzt heute wieder, ich weiß muss viel aufholen, egal,

Michu 14. Jun 2007 17:35

Re: Zählschleife Auswertung der Zufallszahlen
 
hello habs erneut probiert aber immer das gleiche problem aber diesmal startet programm, mäkelt dann und gibt keine auswertung aus

[procedure TForm1.feld_zaehlen;
var a:array[1..6] of integer;
i,k: integer;
begin

for i:=1 to 6 do a[i]:=0;
//for i:=1 to 1000 do inc (a[w[i]];
for i:=1 to 1000 do begin
for k:=1 to 6 do if w[i]=k then inc (a[i]);
end;

for i:=1 to 6 do Li_zuza.Items.add(inttostr(i)+' gibt es '+ inttostr(a[i])+ ' mal.');

end;]

ich danke euch für die hilfe im vorraus

Michu 14. Jun 2007 17:37

Re: Zählschleife Auswertung der Zufallszahlen
 
ich weiß nicht wie man das mit dem delphi code hinbekommt, hab auf das knöpfchen hier oben gedrückt, klappt nit

3_of_8 14. Jun 2007 17:38

Re: Zählschleife Auswertung der Zufallszahlen
 
Es wäre deutlich leichter, wenn du uns auch noch die Fehlermeldung sagen würdest. :roll:

Übrigens kann man Beiträge auch editieren, dann musst du nicht immer doppelposten.

Michu 14. Jun 2007 17:49

Re: Zählschleife Auswertung der Zufallszahlen
 
Tschuldigung :(

die Meldung lautet:

Benachrichtigung über Debugger-Exception

Im Projekt ist eine Exception der EAccessViolation aufgetreten. Meldung:Zugriffsverletzung bei Adresse 00450E64 in Model Projekt1.exe. Lesen von Adresse A8008F5E! Prozess wurde angehalten. Mit einzelner Anweisung oder Start fortsetzen.

Danke

3_of_8 14. Jun 2007 18:04

Re: Zählschleife Auswertung der Zufallszahlen
 
Okay, gehn wir das mal Schritt für Schritt durch:

Delphi-Quellcode:
procedure TForm1.feld_zaehlen;
var a:array[1..6] of integer;
i,k: integer;
begin

for i:=1 to 6 do a[i]:=0;
//for i:=1 to 1000 do inc (a[w[i]];
for i:=1 to 1000 do begin
for k:=1 to 6 do if w[i]=k then inc (a[i]);
end;

for i:=1 to 6 do Li_zuza.Items.add(inttostr(i)+' gibt es '+ inttostr(a[i])+ ' mal.');

end;
Du setzt zuerst alle 6 Array-Elemente auf 0.

Dann hast du eine Zeile auskommentiert, die das gleiche macht, wie die drei darauffolgenden, nur einfacher. Warum hast du die auskommentiert?

Ich vermute folgendes Problem: Du greifst auf einen Array-Index von w zu, der außerhalb des Bereichs liegt. Zeige uns doch mal die Deklaration und Füllung des Arrays w.

Michu 14. Jun 2007 20:14

Re: Zählschleife Auswertung der Zufallszahlen
 
habe auskommentiert weil ich mir nicht sicher war ob es richtig ist...


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Li_zuza: TListBox;
    B_zuza: TButton;
    B_loeschen: TButton;
    procedure feld_fuellen;
    procedure feld_anzeigen;
    procedure feld_zaehlen;
    procedure B_loeschenClick(Sender: TObject);
    procedure B_zuzaClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    w:array [1..1000]of integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.feld_fuellen;
var x:integer;
begin
      for x:=1 to 1000 do w[x] := random (6)+1;
end;

procedure TForm1.feld_anzeigen;
var x:integer;
begin
for x:=1 to 1000 do Li_zuza.Items.Add(inttostr (w[x])) ;
end;

procedure TForm1.feld_zaehlen;
var a:array[1..6] of integer;
    i,k: integer;
begin

for i:=1 to 6 do a[i]:=0;
//for i:=1 to 1000 do inc (a[w[i]];
for i:=1 to 1000 do begin
  for k:=1 to 6 do if w[i]=k then inc (a[i]);
end;

for i:=1 to 6 do Li_zuza.Items.add(inttostr(i)+' gibt es '+ inttostr(a[i])+ ' mal.');

end;
//************************************************************
procedure TForm1.B_loeschenClick(Sender: TObject);
begin
Li_zuza.Items.Clear;
end;

procedure TForm1.B_zuzaClick(Sender: TObject);
begin

feld_fuellen;
feld_anzeigen;
feld_zaehlen;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
end;

end.
habe eben noch eine überlegung angestellt. aber muss noch ausprobieren... muss dafür aber immer ins andere zimmer weil mein delphi nicht will mit windows vista...

3_of_8 15. Jun 2007 23:13

Re: Zählschleife Auswertung der Zufallszahlen
 
Delphi-Quellcode:
for i:=1 to 1000 do begin
  for k:=1 to 6 do if w[i]=k then inc (a[i]);
end;
Das kann nicht funktionierten. i zählt bis 1000 hoch, a hat aber nur eine Länge von 6.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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