Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Variablen effektiv vergleichen?


OmNiBrAiN - Do 08.05.03 14:55
Titel: Variablen effektiv vergleichen?
Hallöchen
Ich habe folgendes Problem: Ich will eine Art Kniffel programmieren und suche eine Möglichkeit, die 6 Variablen zu vergleichen (also dass das Programm erkennt, dass z.b. 3 von den gewürfelten Zahlen gleich sind), ohne für jeden möglichen Fall eine einzelne if-Anweisung schreiben zu müssen (das wären dann nämlich ne ganze Menge ^^)

gibt es da eine elegantere Lösung?


Klabautermann - Do 08.05.03 15:11

Hallo,

wie währe es mit dem ansatz:
Du erstellst ein 6-Elementiges Array vom Typ Byte. Für jede mögliche Augenzahl ein Element.
Nun setzt du alle 6-Felder auf 0 (null). Dann wüfelst du und läufst di ergebnisse der Würfel in einer Schleife ab. Jedesmal wenn du nun eine 1 Findest erhöhst du den Wert des ersten Array Feldes um einen bei einer zwei das zweite Feld usw.
So hast du nachdem du die Würfel überprüft hast, eine Statistik welche Aufenzahl wie oft gewurfen wurde. Mit dier kannst du weiter arbeiten.

Gruß
Klabautermann


OmNiBrAiN - Do 08.05.03 15:20

das klingt doch schon super, danke :]


Udontknow - Do 08.05.03 15:23

Ich würde eigentlich eine Funktion schreiben, die mir die Anzahl der Würfel, die einen bestimmten Wert haben, ermittelt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
function AnzahlWuerfelMitWert(Wert:Byte):Byte;
begin
  Result:=0;
  for i:=1 to WuerfelAnzahl do
    if Wuerfel[i]=Wert then
      Inc(Result);
end;


Um nun herauszufinden, ob irgendeine Augenzahl z.b. dreimal vorkommt, einfach die Werte 1-6 durchgehen und abbrechen, wenn so etwas gefunden.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function XMalGleicheWuerfe(X:integer):Boolean;
var i:Byte;
begin
  for i:=1 to 6 do
    if AnzahlWuerfelMitWert(i)=X then
    begin
      Result:=True;
      exit;
    end;
end;


Cu,
Udontknow


OmNiBrAiN - Do 08.05.03 15:42

ebenfalls interessant :>
ich werde mal sehen, wie ichs umsetze