Powered by SmartDoc

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

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

目次

講義資料

当日の OHP 資料

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

本日の課題

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

課題 20150612-01 : 数当てをするプログラム

Download : 20150612-01.c ( SJIS 版 )

20150612-01.c
/*
 * CDATE FILENAME
 *
 *	数当てを行う
 */

#include <stdio.h>
#include "s_print.h"	/* s_print_int を利用するので.. */
#include "s_input.h"	/* s_input_int を利用するので.. */

/*
 * prompt
 *		メッセージを出力し、キーボードから整数値を読み込んで、
 *		その値を返す関数
 */

int prompt(void) {

	s_print_string ( "私が選んだ数を予想して入力してください : " );

	return s_input_int();
}

/*
 */

void game ( int input, int answer ) {

	 if ( input == answer ) {	/* 入力と答えが一致した */
		s_print_string ( "お見事です。あたりました。\n" );
	 } else {
        if ( input > answer ) {	/* 入力が、答えより大きい */

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

		} else {				/* 入力が、答えより小さい */
			s_print_string ( "その数は小さすぎます。\n" );
		}

		/* 未だ、答えが、当っていないので、ゲームを続ける.. */

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

	 }
}


/*
 *	main
 */

int main( void )
{

	s_print_string ( "私が考えた 1 〜 100 数を予想して当ててみてください。\n" );

    game ( prompt(), (rand()%100) + 1 );

	return 0;
}
入力例
50
75
83
90
85
84
20150612-01.c の実行結果
$ ./20150612-01-QQQQ.exe
私が考えた 1 〜 100 数を予想して当ててみてください。
私が選んだ数を予想して入力してください : 50
その数は小さすぎます。
私が選んだ数を予想して入力してください : 75
その数は小さすぎます。
私が選んだ数を予想して入力してください : 83
その数は小さすぎます。
私が選んだ数を予想して入力してください : 90
その数は大きすぎます。
私が選んだ数を予想して入力してください : 85
その数は大きすぎます。
私が選んだ数を予想して入力してください : 84
お見事です。あたりました。
$ 

課題 20150612-02 : 与えられた整数の素因数を表示するプログラム

Download : 20150612-02.c ( SJIS 版 )

20150612-02.c
/*
 * CDATE FILENAME
 *
 *	与えられた自然数の素因数を出力する
 *
 *  12 は.. 
 *
 *
 *
 *
 *
 *
 */

#include <stdio.h>
#include "s_print.h"	/* s_print_int を利用するので.. */

/*
 * void print_prime_factor_sequence ( int n, int p )
 *  機能 : p 以上の n の素因数を小さい順に並べで表示する
 *  条件 : n には p 未満の素因数を含まれていないものとする
 *	int n :  p 未満の素因数を含まれていない自然数
 *  返り値 : なし
 */

void print_prime_factor_sequence ( int n, int p ) {

	if ( p > n ) {	/* もう n には p 以上の素因数を含まない */
		/* 何もしなくてよい */
		/* 本来、ここにくるのは n = 1 の時だが、念の為 */
	} else if ( n % p == 0 ) {	/* n が p を素因数として含む */
	 	s_print_char ( ' ' );	/* 隙間を空け */
		s_print_int ( p );		/* 素因数を表示し */
		/* もう一度 p の要素があるかもしれないので、そこから試す [再帰] */

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

	} else {	/* n が p を素因数として含まない */
		/* 本来は p の次の素数を試すべきだが.. */
		/* その代りに p + 1 を試す (のは無駄だが、正く動く) [再帰] */

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

	}
}

/*
 * void print_prime_factor_of ( int n )
 *  機能 : n の素因数を出力する
 *	int n : 素因数を表示したい自然数
 *  返り値 : なし
 */

void print_prime_factor_of ( int n ) {

	if ( n < 1 ) { /* 与えらた数が自然数ではない */
		s_print_int ( n );
		s_print_string ( "は、自然数ではありません\n" );
	} else if ( n == 1 ) {  /* 与えられた数が 1 の場合 */
		s_print_int ( n );
		s_print_string ( "の素因数はありません\n" );
	} else {
		s_print_int ( n );
		s_print_string ( "の素因数分解は" );

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

		s_print_string ( " となります。\n" );
	}
}

/*
 *	main
 */

int main( void )
{

	print_prime_factor_of ( 12 );

	return 0;
}
入力例
abc123
20150612-02.c の実行結果
$ ./20150612-02-QQQQ.exe
12の素因数分解は 2 2 3 となります。
$