// Fakultät,
Kombinationen und Variationen werden berechnet:
// Getestet mit D4 unter WinME
function fakultaet(n:shortint):extended;
var
x:integer;
begin
if n >= 0 then begin
result:=1;
for x:=2 to n do
result:=result * x;
end else result:=0;
end;
function kombinationen(n,k:shortint):extended;
begin
if (n <= 0) or (k < 0) or (n < k)
then result:=0 else
result:=fakultaet(n) / (fakultaet(k) * fakultaet(n - k));
end;
function variationen(n,k:shortint):extended;
begin
if (n <= 0) or (k < 0) or (n < k)
then result:=0 else
result:=fakultaet(n) / fakultaet(n - k);
end;
//
Beispiel für Fakultät:
// Angenommen,
man hat die drei Buchstaben
A,
B
und C.
Wieviel unterschiedliche
// Strings kann man damit bilden, unter der Voraussetzung, dass immer
alle drei
// Buchstaben und keine weiteren Zeichen verwendet werden?
// (ABC, ACB,
BAC, BCA, CAB, CBA)
// Der entsprechende Code wäre beispielsweise:
procedure TForm1.Button1Click(Sender: TObject);
var f:extended;
begin
f:=fakultaet(3);
// A B C = drei
Buchstaben
if f > 0 then
label1.caption:=floattostr(f)
else
label1.caption:='Fakultät konnte nicht ermittelt werden';
end;
// Beispiel für
Kombinationen:
// Typisch für
diese Rechenart ist die Frage: Wieviel Möglichkeiten gibt es
// bei "6 aus 49"? Voraussetzung bei Kombinationen ist, dass Variationen
einer
// Folge als die gleiche Bedingung angesehen werden. So ist es bei einem
// Lotto-Tip völlig gleich, ob ich in der Reihenfolge "1
14 20 31 40 45"
oder
// "20 14 1 45
31 40"
ankreuze.
// Der entsprechende Code wäre beispielsweise:
procedure
TForm1.Button3Click(Sender: TObject);
var f:extended;
begin
f:=kombinationen(49,6);
if f > 0 then
label1.caption:=floattostr(f)
else
label1.caption:='Kombinationen konnten nicht ermittelt werden';
end;
// Beispiel für
Variationen:
// Im Gegensatz
zu Kombinationen ist bei Variationen die Reihenfolge der Glieder
// innerhalb eines Ausdrucks durchaus ein Kriterium. Angenommen ich habe
die vier
// Buchstaben A,
B,
C
und D.
Wieviel verschiedene Zweiergruppen kann ich davon
// bilden?
// (AB, BA, AC,
CA, AD, DA, BC, CB, BD, DB, CD, DC)
// Der entsprechende Code wäre beispielsweise:
procedure
TForm1.Button2Click(Sender: TObject);
var f:extended;
begin
f:=variationen(4,2);
if f > 0 then
label1.caption:=floattostr(f)
else
label1.caption:='Variationen konnten nicht ermittelt werden';
end;
|