[Back to MATH SWAG index] [Back to Main SWAG index] [Original]
{
I'm working on some statistical process control Charts and am
learning/using Pascal. The current Chart Uses permutations and
I have been successful in determing the number of combinations
possible, but I want to be able to choose a few of those possible
combinations at random For testing purposes.
Through some trial and error, I've written the following Program
which calculates the number of possible combinations of x digits
with a certain number of digits in each combination. For example
a set of 12 numbers With 6 digits in each combination gives an
answer of 924 possible combinations. After all that, here is the
question: Is there a Formula which would calculate what those 924
combinations are? (ie: 1,2,3,4,5,6 then 1,2,3,4,5,7 then 1,2,3,4,5,8
... 1,2,3,4,5,12 and so on? Any help would be appreciated and any
criticism will be accepted.
}
Program permutations;
Uses Crt;
Type hold_em_here = Array[1..15] of Integer;
Var numbers,combs,bot2a : Integer;
ans,top,bot1,bot2b : Real;
hold_Array : hold_em_here;
Function permutate_this(number1 : Integer) : Real;
Var i : Integer;
a : Real;
begin
a := number1;
For i := (number1 - 1) doWNto 1 do a := a * i;
permutate_this := a;
end;
Procedure input_numbers(Var hold_Array : hold_em_here; counter : Integer);
Var i,j : Integer;
begin
For i := 1 to counter do begin
Write(' Input #',i:2,': ');
READLN(j);
hold_Array[i] := j;
end;
end;
Procedure show_numbers(hold_Array : hold_em_here; counter : Integer);
Var i,j : Integer;
begin
WriteLN;
Write('Array looks like this: ');
For i := 1 to counter do Write(hold_Array[i]:3);
WriteLN
end;
begin
ClrScr;
WriteLN;
WriteLN(' Permutations');
WriteLN;
Write(' Enter number of digits (1-15): ');
READLN(numbers);
Write('Enter number in combination (2-10): ');
READLN(combs);
top := permutate_this(numbers);
bot1 := permutate_this(combs);
bot2a := numbers - combs;
bot2b := permutate_this(bot2a);
ans := top/(bot1*bot2b);
WriteLN(' total permutations For above is: ',ans:3:0);
WriteLN;
input_numbers(hold_Array,numbers);
show_numbers(hold_Array,numbers);
END.
[Back to MATH SWAG index] [Back to Main SWAG index] [Original]