Powered by SmartDoc

ソフトウェア概論A/B (2020/05/29)
Ver. 1.0

2020年5月29日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2020/soft/soft.html
ソフトウェア概論 A/B2020年5月29日 の資料

目次

講義資料

当日の OHP 資料

講議中に作成したプログラム

本日の課題

課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。

課題 20200529-01 : 一進数のフィボナッチ数を計算する関数

Download : 20200529-01.c

20200529-01.c
/*
 * 20200529-01-QQQQ.c
 *	一進数のフィボナッチ数
 *
 *                          0            (n=0)
 *      fib(n) = {          1            (n=1)
 *                 fib(n-1) + fib(n-2)   (n>1)
 */

#include <stdio.h>
#include <string.h>

/*
 * 一進数のフィボナッチ数列
 */

void fib ( char *n ) {

	 if ( !strcmp ( n, "" ) ) {					/* n = 0 */
	 	/* 何もしなくてよい */					/*		fib(0) = 0 */
	 } else if ( !strcmp ( n + 1, "" ) ) {		/* n = 1 */
		printf ( "0" );							/*		fib(1) = 1 */
	 } else {									/* n > 0 */
	 	fib ( n + 1 );							/* fib(n-1) + fib(n-2) */

	/*
	**	 この部分を完成させなさい
	*/

	 }

}

int main ( void ) {

	/* fib 3 */
	fib ( "000" );
	printf ( "\n" );

	/* fib 10 */

	/*
	**	 この部分を完成させなさい
	*/

	printf ( "\n" );

  return 0;
}
20200529-01.c の実行結果
$ ./20200529-01-QQQQ.exe
00
0000000000000000000000000000000000000000000000000000000
$ 

課題 20200529-02 : 一進数の階乗を計算する関数

Download : 20200529-02.c

20200529-02.c
/*
 * 20200529-02-QQQQ.c
 *	一進数の階乗
 */

#include <string.h>

/*
 * n_time_fac ( n, n1 )
 *	fac ( n1 ) を n 回行う
 *		=> n * fac(n1)
 */

void n_time_fac ( char *n, char *n1 ) {

	 if ( !strcmp ( n, "" ) ) {					/* n = 0 */
		/* 何もしない */
	 } else {									/* n > 0 */

	/*
	**	 この部分を完成させなさい
	*/

		n_time_fac ( n + 1, n1 );				/* n * fac ( n-1 ) */
	 }
}


/*
 * 一進数の階乗
 */

void fac ( char *n ) {

	 if ( !strcmp ( n, "" ) ) {					/* n = 0 */
	 	printf ( "0" );							/*		fac(0) = 1 */
	 } else {									/* n > 0 */
		n_time_fac ( n, n + 1 );
	 }

}

/*
 * main
 */

int main ( void ) {

	/* fac(3) */
	fac ( "000" );
	printf ( "\n" );

	/* fac(5) */

	/*
	**	 この部分を完成させなさい
	*/

	printf ( "\n" );

  return 0;
}
20200529-02.c の実行結果
$ ./20200529-02-QQQQ.exe
000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
$