Powered by SmartDoc

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

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

目次

講義資料

当日の OHP 資料

Download

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

本日の課題

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

Download : 20140606-01.c ( SJIS 版 )

20140606-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 ) {
			s_print_string ( "その数は大きすぎます。\n" );
		} else {
			s_print_string ( "その数は小さすぎます。\n" );
		}
		game( prompt(), answer );
	 }
}


/*
 *	main
 */

int main( void )
{

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

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

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

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

Download : 20140606-02.c ( SJIS 版 )

20140606-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
20140606-02.c の実行結果
C:\usr\c\> 20140606-02-QQQQ
12の素因数分解は 2 2 3 となります。
C:\usr\c\> 

Links

その他