Powered by SmartDoc

ソフトウェア概論A/B (2018/06/08)
Ver. 1.0

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

目次

講義資料

当日の OHP 資料

Download

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

本日の課題

課題 20180608-01 : 高さ 3 のハノイを解く

Download : 20180608-01.c

20180608-01.c
/*
 * 20180608-01-QQQQ.c
 *	高さ3 のハノイの塔を手動で解く
 */


#include <stdio.h>

/*
 *	ハノイプログラムには、s_hanoi.h が必要
 */

#include "s_hanoi.h"

/*
 * ハノイの塔 プログラム
 */


int main ( void ) {

  /*
   * 最初は "1" に全ての円盤が置いてある
   * これを "2" に全ての円盤を移動する
   */

	/*
	 * ハノイで、できること
	 *	 s_hanoi_init() : ハノイプログラムの開始 : 最初に一度だけ呼び出す
	 *   s_hanoi_size ( char *discs ) : ハノイの塔の高さを設定する
	 *   s_hanoi_move ( char *from, char *to ) : from にある円盤を to に移す
	 *   s_hanoi_clear () : 最初の状態に戻す
	 *   s_hanoi_stop() : ハノイ塔プログラムの終了 : return 0 の前に呼び出す
	 */

	s_hanoi_init();	/* ハノイの塔のプログラムの初期変化 */
	/* s_hanoi_set ( char *discs ) を呼ばなければ、高さは 3 */

	printf ( "これから解答を開始します。[Enter] キーを押してください\n" );
	putchar ( '>' );
	putchar ( getchar() );	/* 開始前に、一旦停止 */

	/* 解答開始 */
	/* 高さが、具体的な小さい数(3)で指定されているので、
	   解答手順を実際に書き下すだけ */

	s_hanoi_move ( "1", "2" );	/* 1 から 2 に、(大きさ 1 の)円盤を移動 */
	s_hanoi_move ( "1", "3" );	/* 1 から 3 に、(大きさ 2 の)円盤を移動 */

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

	s_hanoi_move ( "1", "2" );	/* 1 から 2 に、(大きさ 3 の)円盤を移動 */
	s_hanoi_move ( "3", "1" );	/* 3 から 1 に、(大きさ 1 の)円盤を移動 */

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

	s_hanoi_move ( "1", "2" );	/* 1 から 2 に、(大きさ 1 の)円盤を移動 */

	/* 解答終了 */

	printf ( "プログラムを終了するには [Enter] キーを押してください\n" );
	putchar ( '>' );		/* 終了前に確認 */
	putchar ( getchar() );

	/* ハノイの終了 */
	s_hanoi_stop();

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