はじめに
順列と組み合わせは、異なる 2 つの数学的概念です。順列は、特定の順序でオブジェクトを並べることです。組み合わせは、選択されたオブジェクトの順序を考慮せずに、集合からオブジェクトを選択することです。この実験(Lab)では、C 言語を使用して順列と組み合わせを計算する方法を学びます。
main 関数を記述する
まず、~/project/ディレクトリにmain.cという名前の新しいファイルを作成し、ヘッダーファイルをインクルードし、main 関数を記述するための初期コードを記述します。
#include <stdio.h>
int main() {
printf("Permutation and Combination in C Language\n\n");
// Code for permutation and combination calculation will be added here
return 0;
}
階乗関数を記述する
順列と組み合わせを計算するには、数の階乗を計算する必要があります。階乗は再帰的に計算できます。main 関数の外側に以下のコードを追加します。
long factorial(int num) {
if (num == 0) {
return 1;
}
else {
return num * factorial(num - 1);
}
}
この関数は、整数を引数として受け取り、その階乗を返します。
nCr を計算する関数を記述する
main 関数の外側に、nCr を計算するための以下の関数を追加します。
long nCr(int n, int r) {
if (n < r) {
return -1;
}
else {
return factorial(n) / (factorial(r) * factorial(n - r));
}
}
この関数は、n と r の 2 つの整数を引数として受け取り、nCr の値を返します。nCr の値は、n の階乗を、r の階乗と n-r の階乗の積で割ることによって計算されます。
nPr を計算する関数を記述する
main 関数の外側に、nPr を計算するための以下の関数を追加します。
long nPr(int n, int r) {
if (n < r) {
return -1;
}
else {
return factorial(n) / factorial(n - r);
}
}
この関数は、n と r の 2 つの整数を引数として受け取り、nPr の値を返します。nPr の値は、n の階乗を n-r の階乗で割ることによって計算されます。
プログラムのドライバコードを記述する
main 関数内に、入力を受け取り結果を表示するための以下のコードを追加します。
int main()
{
int n, r;
printf("Enter the value of n:");
scanf("%d", &n);
printf("Enter the value of r:");
scanf("%d", &r);
printf("nCr is %ld\n", nCr(n, r));
printf("nPr is %ld\n", nPr(n, r));
return 0;
}
このコードは、ユーザーから n と r の入力値を受け取り、nCr() 関数と nPr() 関数を呼び出してそれぞれの値を計算し、それらを表示します。
完全なコード
最終的なコードは以下のようになります。
#include <stdio.h>
long factorial(int num) {
if (num == 0) {
return 1;
}
else {
return num * factorial(num - 1);
}
}
long nCr(int n, int r) {
if (n < r) {
return -1;
}
else {
return factorial(n) / (factorial(r) * factorial(n - r));
}
}
long nPr(int n, int r) {
if (n < r) {
return -1;
}
else {
return factorial(n) / factorial(n - r);
}
}
int main()
{
int n, r;
printf("Enter the value of n:");
scanf("%d", &n);
printf("\nEnter the value of r:");
scanf("%d", &r);
printf("nCr is %ld\n", nCr(n, r));
printf("nPr is %ld\n", nPr(n, r));
return 0;
}
まとめ
この実験(Lab)では、C 言語で順列と組み合わせを計算する方法を学びました。階乗、nCr、および nPr を計算する関数を記述しました。また、プログラムのドライバコードも記述しました。上記のステップに従うことで、ユーザーの入力に対して順列と組み合わせを計算できます。



