情報科学演習 宿題 2012.11.19

Back


11から15までの整数を1つと5から10までの整数を1つ発生させる.それらをmとnとすると,組合せの数mCnを求めるプログラムを作成せよ.

なお,表示においては先頭の行には自分の学生番号を,最後にはハイフンによるラインを出力すること.

My student number: s124099

10 C 6 = 210

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

for 文を3つ使用して定義どおりに求めるのが一番簡単だと思います. 扱える整数の上限 long を意識して作成する必要があります.

解答例

/* ************************************************** */
/*                                                    */
/*      情報科学演習 C6 C7                            */
/*      レポート課題                                  */
/*      2012.11.19                                    */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      学生番号:                                    */
/*                                                    */
/*      氏名:                                        */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      この行以降に解答のプログラムを書くこと        */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
	srand((unsigned) time(NULL));

	int m, n, i;
	long num=1, dom=1, c;
	
	m = rand() % 5 + 10;
	n = rand() % 6 + 5;
	
	printf("My student number: s124099\n\n");
	
	for(i=m; i<m-n; i--)
		num *= i;
		
	for(i=1; i<=n; i++)
		dom *= i;
	
	c = num / dom;
	
	printf("%d C %d = %d\n", m, n, c);
	printf("\n----------------------------\n\n");
		
	return(0);
}

Back