プログラミング入門II 宿題 2019.05.13

Back


順列と組み合わせについて,その場合の数を計算するプログラムを考えます.7〜9の範囲の整数をどれか一つ乱数により発生させ,それを m とします.次に,3〜5の範囲の整数を乱数により一つ発生させ,それを n とします.

mPnmCn を求めるプログラムを再帰の例題を活用して作成しましょう.

My student number: s186099

7P3 = 210
7C3 = 35

----------------------------

なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.

解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

// ************************************************** 
//                                                    
//      プログラミング入門II レポート課題                                    
//      2019.5.13                                    
//                                                    
// ************************************************** 
//                                                    
//      学生番号:                                     
//                                                    
//      氏名:                                         
//                                                    
// ************************************************** 
//                                                    
//      
              
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int fact(int n);

int main(void)
{
	srand((unsigned) time(NULL));
	
	int p, c, m, n;
	
	printf("My student number: s186099\n\n");
	
	m = rand() % 3 + 7;
	n = rand() % 3 + 3;
	
	p = fact(m) / fact(m-n);
	c = p / fact(n);
	
	printf("%dP%d = %d\n", m, n, p);
	printf("%dC%d = %d\n", m, n, c);
	
	printf("\n----------------------------\n\n");

	return 0;
}

int fact(int n)
{
	if(n==1)
	{
		return 1;
	}
	else
	{
		return n * fact(n-1);
	}
}


Back