![]() |
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] |
Re: Zählschleife Auswertung der Zufallszahlen
|
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
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "Object-Pascal / Delphi-Language" verschoben.
|
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:
[edit=Matze][delphi]-Tags gesetzt. Zukünftig bitte selbst erledigen. Mfg, Matze[/edit]
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. |
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:
|
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; |
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:
[edit=Matze][delphi]-Tags repariert. Mfg, Matze[/edit]
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; |
Re: Zählschleife Auswertung der Zufallszahlen
Hallo,
was klappt denn nicht bei shmias Code? Kommen Fehlermeldungen? Denn einfacher kann man es kaum lösen. |
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. |
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,
|
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. |
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 |
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,
|
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 |
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
|
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. |
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 |
Re: Zählschleife Auswertung der Zufallszahlen
Okay, gehn wir das mal Schritt für Schritt durch:
Delphi-Quellcode:
Du setzt zuerst alle 6 Array-Elemente auf 0.
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; 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. |
Re: Zählschleife Auswertung der Zufallszahlen
habe auskommentiert weil ich mir nicht sicher war ob es richtig ist...
Delphi-Quellcode:
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...
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. |
Re: Zählschleife Auswertung der Zufallszahlen
Delphi-Quellcode:
Das kann nicht funktionierten. i zählt bis 1000 hoch, a hat aber nur eine Länge von 6.
for i:=1 to 1000 do begin
for k:=1 to 6 do if w[i]=k then inc (a[i]); end; |
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