AGB  ·  Datenschutz  ·  Impressum  







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

Sammelbilder [lineares Feld]

Ein Thema von me2u · begonnen am 26. Apr 2007 · letzter Beitrag vom 3. Mai 2007
Antwort Antwort
me2u
(Gast)

n/a Beiträge
 
#1

Re: Sammelbilder [lineares Feld]

  Alt 2. Mai 2007, 22:41
Sorry, dass ich nochmal nerve, aber ich habe Probleme bei dem Mittelwert berechnen. Irgendwie bin ich ganz durcheinander ^^ Bin mir auch nicht sicher, was ich da mit den ganzen neuen Variablen (x und durchlaeufe) überhaupt gemacht hab bzw. machen wollte.

Hier mein Code:
Delphi-Quellcode:
procedure TForm1.btnBerechnenClick(Sender: TObject);

var Bilder : array of integer;
    bilder_gesamt: integer; //Anzahl aller Bilder
    Tafeln : integer; //Anzahl der Tafeln Schokolade, die gekauft werden
    fehlend : integer; //Anzahl der Bilder, die man noch nicht gesammelt hat
    durchlaeufe : integer; //Zählvariable
    Mittelwert : real;
    Ergebnis : integer; //Summe aller Tafeln
    AnzahlDurchlaeufe : integer;//gewünschte Anzahl der Durchläufe
    i, x : integer; //Zählvariablen

begin
  //Zufallsgenerator initialisieren
  randomize;

  //Startwerte setzen
  bilder_gesamt := StrToInt(edtGesamtbilder.Text);
  //dynamischer Array
  SetLength(Bilder, bilder_gesamt);
  AnzahlDurchlaeufe := StrToInt(edtDurchlaeufe.Text);
  Ergebnis := 0;

  //Verarbeitung: "Einkauf" Schleife
  for durchlaeufe := 1 to AnzahlDurchlaeufe do
  begin
    while fehlend > 0 do
    begin
      Tafeln := 0;
      fehlend := bilder_gesamt;
      //Zuerst müssen alle Bilder den Wert 0 haben
      for i := 0 to (bilder_gesamt - 1) do
      begin
        Bilder[i]:=0;
      end;
      Tafeln := Tafeln + 1;
      x := Random(bilder_gesamt);
      //Bild wird als gekauft "markiert"
      Bilder[x] := Bilder[x] + 1;
      //Wenn man das Bild hat, wird fehlend verringert
      IF Bilder[x] = 1 THEN
      begin
        fehlend := fehlend - 1;
      end;
    end;
  //Man addiert alle Tafeln
  Ergebnis := Ergebnis + Tafeln;
  end;

  Mittelwert := Ergebnis/AnzahlDurchlaeufe;

  //Ausgabe
  lblAusgabe.Caption := 'Man muss rund ' + FloatToStr(Mittelwert) + ' Tafeln kaufen bis man alle Bilder gesammelt hat.';
end;

end.
Irgendwelche Vorschläge, wieso das eine Endlosschleife gibt, wären sehr hilfreich. Achja, und mache ich da nicht auch Sachen, die sinnlos sind? Also, was könnte man optimieren ?

mfg
me2u
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:15 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 by Thomas Breitkreuz