Powered by SmartDoc

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

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

目次

講義資料

当日の OHP 資料

当日のOHP資料です。

講義で利用するサンプルプログラム

サンプルファイル

Download : sample-001.c ( SJIS 版 )

sample-001.c
/*
 * 2013/07/05 sample-001.c
 */

/*
 *  二分法
 *
 *	一つ浮動小数点数値をキーボードから入力し、その平方根を出力する
 *	手段としては、「二分法」を使う
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-001.exe sample-001.c
 *		実行
 *			sample-001
 */

#include <stdio.h>
#include <stdlib.h>		/* exit を利用するので必要 */

#include "s_input.h"
#include "s_print.h"

/*
 *
 */

#define	EPSILON	0.00000001		/* 誤差幅 */

/*
* double regula_falsi_square_root ( double a, double min, double mid, \
    double max )
 *		double a	平方根の元になる数(正を仮定している)
 *		double min, max 根の入る区間の範囲
 *		double mid	min と mid の中点
 *		return		a 平方根
 *			二分法により、a の平方根を求める
 *			0 < min < a の平方根 < max
 */

double regula_falsi_square_root ( double a, double min, double mid, double \
    max ) {

	if ( max - min < EPSILON ) {	/* 十分に精度が上った */
		return mid;					/* 中点の値を答として返す */
	} else {						/* まだ、狭める必要がある */
		/* min が解のどちら側にあるかを調べ.. それに併せて区間を調整 */
		/* f(x)=x^2-a */
		if ( mid * mid - a < 0.0 ) {	/* f(mid) の符号を確認 */
					/* 解の左にあった */
			return regula_falsi_square_root ( a, mid, (mid+max)/2.0, max );
		} else {	/* 解の右にあった */
			return regula_falsi_square_root ( a, min, (min+mid)/2.0, mid );
		}
	}
}


/*
 * double square_root ( double a )
 *		double a	平方根の元になる数
 *		return		a 平方根
 *			a の平方根を求めて結果として返すが、
 *			計算の基本は、regula_falsi_square_root にまかせる
 *			ここでは、計算の正規化を行う
 */

double square_root ( double a ) {

	if ( a < 0.0 ) {					/* a が負の数ならば.. */
		s_print_string ( "負の平方根は計算できません\n" );
										/* エラーメッセージを出力し.. */
		exit ( -1 );					/* Error Code (-1) でプログラム終了 */
	} else if ( a < 1.0 ) {				/* a が 1.0 以下なら */
		return regula_falsi_square_root ( a, a, (a+1.0)/2.0, 1.0 );
										/* 平方根は a と 1.0 の間にある */
	} else {							/* そうでなければ.. */
		return regula_falsi_square_root ( a, 1.0, (1.0+a)/2.0, a );
										/* 平方根は 1.0 と a の間にある */
	}

}

/*
 * void print_square_root ( double a )
 *		double a	平方根を計算する数
 *			元の数と、平方根を出力する
 */

void print_square_root ( double a ) {

	 s_print_double ( a );
	 s_print_string ( " の平方根は " );
	 s_print_double ( square_root ( a ) );
	 s_print_string ( " です。\n" );

}

/*
 *	main
 */

int main( double argc, char *argv[] )
{

	s_print_string ( "実数値を一つ入力してください : " );	
	print_square_root ( s_input_double() );

	return 0;
}
入力例
2.0
sample-001.c の実行結果
C:\usr\c>sample-001<  sample-001.in
実数値を一つ入力してください : 2.000000
2.000000 の平方根は 1.414214 です。
C:\usr\c> 

Download : sample-002.c ( SJIS 版 )

sample-002.c
/*
 * 2013/07/05 sample-002.c
 */

/*
 *  関数と引数変数
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-002.exe sample-002.c
 *		実行
 *			sample-002
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 「金糸雀(かなりや)」
 *  (c) 西條八十作詞・成田為三作曲
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html
 */

/*
 * main
 */

int main ( int argc, char *argv[] ) {

		/* 一番 */
	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( "後の山に 棄てましょか\n" );
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();

		/* ニ番 */
	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( "背戸の小薮に 埋けましょか\n" );
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();

	return 0;
}
sample-002.c の実行結果
C:\usr\c>sample-002
唄を忘れた 金糸雀(かなりや)は
後の山に 棄てましょか
いえ いえ それはなりませぬ

唄を忘れた 金糸雀(かなりや)は
背戸の小薮に 埋けましょか
いえ いえ それはなりませぬ

C:\usr\c> 

Download : sample-003.c ( SJIS 版 )

sample-003.c
/*
 * 2013/07/05 sample-003.c
 */

/*
 *  関数と引数変数
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-003.exe sample-003.c
 *		実行
 *			sample-003
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 「金糸雀(かなりや)」
 *  (c) 西條八十作詞・成田為三作曲
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html
 */

void kyoku_1(void) {

		/* 一番 */
	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( "後の山に 棄てましょか\n" );
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();
}

void kyoku_2(void) {

		/* ニ番 */
	 s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	 s_print_string ( "背戸の小薮に 埋けましょか\n" );
	 s_print_string ( "いえ いえ それはなりませぬ\n" );

	 s_print_newline();
}

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	kyoku_1();
	kyoku_2();

	return 0;
}
sample-003.c の実行結果
C:\usr\c>sample-003
唄を忘れた 金糸雀(かなりや)は
後の山に 棄てましょか
いえ いえ それはなりませぬ

唄を忘れた 金糸雀(かなりや)は
背戸の小薮に 埋けましょか
いえ いえ それはなりませぬ

C:\usr\c> 

Download : sample-004.c ( SJIS 版 )

sample-004.c
/*
 * 2013/07/05 sample-004.c
 */

/*
 *  関数と引数変数 (「置き換え」による理解 )
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-004.exe sample-004.c
 *		実行
 *			sample-004
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 「金糸雀(かなりや)」
 *  (c) 西條八十作詞・成田為三作曲
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html
 */

void kyoku_n ( char *string ) {

	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( string );
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();
}

void kyoku_1(void) {

		/* 一番 */
	kyoku_n ( "後の山に 棄てましょか\n" );
}

void kyoku_2(void) {

		/* ニ番 */
	kyoku_n ( "背戸の小薮に 埋けましょか\n" );
}

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	kyoku_1();
	/*
		kyoku_1();
			↓
		kyoku_n ( "後の山に 棄てましょか\n" );
			↓
				string ← "後の山に 棄てましょか\n"

		s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
		s_print_string ( string );
		s_print_string ( "いえ いえ それはなりませぬ\n" );

		s_print_newline();
			↓
		s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
		s_print_string ( "後の山に 棄てましょか\n" );
		s_print_string ( "いえ いえ それはなりませぬ\n" );

		s_print_newline();
	*/

	kyoku_2();

	return 0;
}
sample-004.c の実行結果
C:\usr\c>sample-004
唄を忘れた 金糸雀(かなりや)は
後の山に 棄てましょか
いえ いえ それはなりませぬ

唄を忘れた 金糸雀(かなりや)は
背戸の小薮に 埋けましょか
いえ いえ それはなりませぬ

C:\usr\c> 

Download : sample-005.c ( SJIS 版 )

sample-005.c
/*
 * 2013/07/05 sample-005.c
 */

/*
 *  関数と引数変数 (「代入」による理解 )
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-005.exe sample-005.c
 *		実行
 *			sample-005
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 「金糸雀(かなりや)」
 *  (c) 西條八十作詞・成田為三作曲
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html
 */

void kyoku_n ( char *string ) {

	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( string );
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();
}

void kyoku_1(void) {

		/* 一番 */
	kyoku_n ( "後の山に 棄てましょか\n" );
}

void kyoku_2(void) {

		/* ニ番 */
	kyoku_n ( "背戸の小薮に 埋けましょか\n" );
}

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	/*
	kyoku_1();
	*/

	{
		char *string = "後の山に 棄てましょか\n";	/* 変数宣言と代入 */

		s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
		s_print_string ( string );					/* 代入された値が使われる */
		s_print_string ( "いえ いえ それはなりませぬ\n" );

		s_print_newline();
	}

	kyoku_2();

	return 0;
}
sample-005.c の実行結果
C:\usr\c>sample-005
唄を忘れた 金糸雀(かなりや)は
後の山に 棄てましょか
いえ いえ それはなりませぬ

唄を忘れた 金糸雀(かなりや)は
背戸の小薮に 埋けましょか
いえ いえ それはなりませぬ

C:\usr\c> 

Download : sample-006.c ( SJIS 版 )

sample-006.c
/*
 * 2013/07/05 sample-006.c
 */

/*
 *  変数宣言と代入
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-006.exe sample-006.c
 *		実行
 *			sample-006
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 「金糸雀(かなりや)」
 *  (c) 西條八十作詞・成田為三作曲
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html
 */

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	{
		char *string = "後の山に 棄てましょか\n";	/* 変数宣言と代入 */

		s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
		s_print_string ( string );					/* 代入された値が使われる */
		s_print_string ( "いえ いえ それはなりませぬ\n" );

		s_print_newline();
	}

			/* ブロック内の宣言は、ブロックの外では無効 */

	{
		char *string = "背戸の小薮に 埋けましょか\n";	/* 再宣言 */

		s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
		s_print_string ( string );					/* 代入された値が使われる */
		s_print_string ( "いえ いえ それはなりませぬ\n" );

		s_print_newline();
	}

	return 0;
}
sample-006.c の実行結果
C:\usr\c>sample-006
唄を忘れた 金糸雀(かなりや)は
後の山に 棄てましょか
いえ いえ それはなりませぬ

唄を忘れた 金糸雀(かなりや)は
背戸の小薮に 埋けましょか
いえ いえ それはなりませぬ

C:\usr\c> 

Download : sample-007.c ( SJIS 版 )

sample-007.c
/*
 * 2013/07/05 sample-007.c
 */

/*
 *  変数宣言と代入
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-007.exe sample-007.c
 *		実行
 *			sample-007
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 「金糸雀(かなりや)」
 *  (c) 西條八十作詞・成田為三作曲
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html
 */

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	char *string;	/* 変数宣言 (変数宣言はブロックの先頭で行う) */

		/* 一番 */

	string = "後の山に 棄てましょか\n";	/* 代入 */

	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( string );			/* 代入された値が使われる */
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();

		/* ニ番 */

	string = "背戸の小薮に 埋けましょか\n";	/* (再)代入 */

	s_print_string ( "唄を忘れた 金糸雀(かなりや)は\n" );
	s_print_string ( string );				/* 最後に代入された値が使われる */
	s_print_string ( "いえ いえ それはなりませぬ\n" );

	s_print_newline();

	return 0;
}
sample-007.c の実行結果
C:\usr\c>sample-007
唄を忘れた 金糸雀(かなりや)は
後の山に 棄てましょか
いえ いえ それはなりませぬ

唄を忘れた 金糸雀(かなりや)は
背戸の小薮に 埋けましょか
いえ いえ それはなりませぬ

C:\usr\c> 

Download : sample-008.c ( SJIS 版 )

sample-008.c
/*
 * 2013/07/05 sample-008.c
 */

/*
 *  代入を使わざず、二つの整数の和を計算する
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-008.exe sample-008.c
 *		実行
 *			sample-008
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * print_sum
 */

void print_sum ( int a, int b ) {

	 s_print_int ( a );
	 s_print_string ( "と" );
	 s_print_int ( b );
	 s_print_string ( "の和は" );
	 s_print_int ( a+b );
	 s_print_string ( "です。\n" );

}

/*
 * print_sum_one_and_input
 */

void print_sum_one_and_input ( int a ) {

	print_sum ( a, s_input_int() );

}

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	s_print_string ( "二つの数を入力してください\n" );
	print_sum_one_and_input ( s_input_int() );

	return 0;
}
入力例
12
56
sample-008.c の実行結果
C:\usr\c>sample-008<  sample-008.in
二つの数を入力してください
12
56
12と56の和は68です。
C:\usr\c> 

Download : sample-009.c ( SJIS 版 )

sample-009.c
/*
 * 2013/07/05 sample-009.c
 */

/*
 *  代入を利用して、二つの整数の和を計算する
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-009.exe sample-009.c
 *		実行
 *			sample-009
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * main
 */

int main ( int argc, char *argv[] ) {
	int a;	/* 変数の宣言 (ブロックの先頭でしかできない) */
	int b;	/* 変数の宣言 */

	s_print_string ( "二つの数を入力してください\n" );

	a = s_input_int();	/* 変数 a への代入 */
	b = s_input_int();	/* 変数 b への代入 */
						/* 命令の並びの順と、キーボードから入力される順が一致 */

	s_print_int ( a );
	s_print_string ( "と" );
	s_print_int ( b );
	s_print_string ( "の和は" );
	s_print_int ( a+b );
	s_print_string ( "です。\n" );

	return 0;
}
入力例
12
56
sample-009.c の実行結果
C:\usr\c>sample-009<  sample-009.in
二つの数を入力してください
12
56
12と56の和は68です。
C:\usr\c> 

Download : sample-010.c ( SJIS 版 )

sample-010.c
/*
 * 2013/07/05 sample-010.c
 */

/*
 *  1 〜 5 までを出力
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-010.exe sample-010.c
 *		実行
 *			sample-010
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	/*
	*/

	s_print_int ( 1 );
	s_print_newline();

	s_print_int ( 2 );
	s_print_newline();

	s_print_int ( 3 );
	s_print_newline();

	s_print_int ( 4 );
	s_print_newline();

	s_print_int ( 5 );
	s_print_newline();

	return 0;
}
sample-010.c の実行結果
C:\usr\c>sample-010
1
2
3
4
5
C:\usr\c> 

Download : sample-011.c ( SJIS 版 )

sample-011.c
/*
 * 2013/07/05 sample-011.c
 */

/*
 *  1 〜 5 までを出力 (変数を導入してみる)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-011.exe sample-011.c
 *		実行
 *			sample-011
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * main
 */

int main ( int argc, char *argv[] ) {

	int i = 1;

	/*
	*/

	s_print_int ( i );
	s_print_newline();

	i = i + 1;				/* 新しい i の値は、古い i の値で計算される */
							/* i ← 1 + 1 = 2 */

	s_print_int ( i );
	s_print_newline();

	i = i + 1;				/* i ← 2 + 1 = 3 */

	s_print_int ( i );
	s_print_newline();

	i = i + 1;				/* i ← 3 + 1 = 4 */

	s_print_int ( i );
	s_print_newline();

	i = i + 1;				/* i ← 4 + 1 = 5 */

	s_print_int ( i );
	s_print_newline();

	i = i + 1;				/* これは不要だが、規則性を尊んで.. */

	return 0;
}
sample-011.c の実行結果
C:\usr\c>sample-011
1
2
3
4
5
C:\usr\c> 

Download : sample-020.c ( SJIS 版 )

sample-020.c
/*
 * 2013/07/05 sample-020.c
 */

/*
 * 再帰呼出しと代入
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-020.exe sample-020.c
 *		実行
 *			sample-020
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * factrial
 */

int factrial ( int n ) {

	if ( n < 2 ) {
		return 1;
	} else {
		return factrial ( n - 1 ) * n;
	}

}

/*
 * main
 */

int main ( int argc, char *argv[] ) {
	int n;
	int fac;

	s_print_string ( "一つの数を入力してください\n" );
	n = s_input_int();

	fac = factrial ( n );

	s_print_int ( n );
	s_print_string ( "の階乗は" );
	s_print_int ( fac );
	s_print_string ( "です。\n" );

	return 0;
}
入力例
4
sample-020.c の実行結果
C:\usr\c>sample-020<  sample-020.in
一つの数を入力してください
4
4の階乗は24です。
C:\usr\c> 

Download : sample-021.c ( SJIS 版 )

sample-021.c
/*
 * 2013/07/05 sample-021.c
 */

/*
 * 再帰呼出しと代入
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-021.exe sample-021.c
 *		実行
 *			sample-021
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * factrial
 */

int factrial ( int n ) {
	int retV;

	if ( n < 2 ) {
		retV = 1;
	} else {
		int n1 = n - 1;
		int fac1 = factrial ( n1 );

		retV = fac1 * n;
	}

	return retV;
}

/*
 * main
 */

int main ( int argc, char *argv[] ) {
	int number;
	int fac;

	s_print_string ( "一つの数を入力してください\n" );
	number = s_input_int();

	fac = factrial ( number );

	s_print_int ( nunber );
	s_print_string ( "の階乗は" );
	s_print_int ( fac );
	s_print_string ( "です。\n" );

	return 0;
}
入力例
4
sample-021.c の実行結果
C:\usr\c>sample-021<  sample-021.in
一つの数を入力してください
4
4の階乗は24です。
C:\usr\c> 

Download : sample-022.c ( SJIS 版 )

sample-022.c
/*
 * 2013/07/05 sample-022.c
 */

/*
 * 再帰呼出しと代入
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-022.exe sample-022.c
 *		実行
 *			sample-022
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * factrial
 */

int factrial ( int n ) {
	int retV;

	if ( n < 2 ) {
		retV = 1;
	} else {
		int n1 = n - 1;
		int fac1;

		fac1 = factial ( n1 );
 の展開 */
		retV = fac1 * n;
	}

	return retV;
}

/*
 * main
 */

int main ( int argc, char *argv[] ) {
	int number;
	int fac;

	s_print_string ( "一つの数を入力してください\n" );
	number = s_input_int();

	/* fac = factrial ( number ); の展開 */

	{
		int n = number;		/* n (引数) に number の値を入れる */
		int retV;

		if ( n < 2 ) {
			retV = 1;
		} else {
			int n1 = n - 1;
			int fac1;

			fac1 = factrial ( n1 );

			retV = fac1 * n;
		}

		fac = retV;		/* return で値を返す代りに、変数に代入 */
	}

	s_print_int ( n );
	s_print_string ( "の階乗は" );
	s_print_int ( fac );
	s_print_string ( "です。\n" );

	return 0;
}
入力例
4
sample-022.c の実行結果
C:\usr\c>sample-022<  sample-022.in
一つの数を入力してください
4
4の階乗は24です。
C:\usr\c> 

Download : sample-023.c ( SJIS 版 )

sample-023.c
/*
 * 2013/07/05 sample-023.c
 */

/*
 * 再帰呼出しと代入
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-023.exe sample-023.c
 *		実行
 *			sample-023
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * factrial
 */

int factrial ( int n ) {
	int retV;

	if ( n < 2 ) {
		retV = 1;
	} else {
		int n1 = n - 1;
		int fac1;

		/* fac1 = factial ( n1 ); の展開 */
		{
			int n = n1;		/* 新しい n (引数) に n1 の値を入れる */
			int retV;

			if ( n < 2 ) {
				retV = 1;
			} else {
				int n1 = n - 1;
				int fac1;

				fac1 = factrial ( n1 );
			}

			fac1 = retV;		/* 値を返す代りに、変数に代入 */
		 }

		retV = fac1 * n;
	}

	return fac;
}

/*
 * main
 */

int main ( int argc, char *argv[] ) {
	int n;
	int fac;

	s_print_string ( "一つの数を入力してください\n" );
	n = s_input_int();

	fac = factrial ( n );

	s_print_int ( n );
	s_print_string ( "の階乗は" );
	s_print_int ( fac );
	s_print_string ( "です。\n" );

	return 0;
}
入力例
4
sample-023.c の実行結果
C:\usr\c>sample-023<  sample-023.in
一つの数を入力してください
4
4の階乗は24です。
C:\usr\c> 

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

本日の課題

課題 20130705-01 : キーボードから入力された三つの整数を小さい順に出力する

Download : 20130705-01.c ( SJIS 版 )

20130705-01.c
/*
 * 課題 20130628-01
 *
 * 2013/06/28 20130628-01-QQQQ.c
 *
 *	キーボードから三つの整数を入力し、小さい順に出力する
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"


/*
 *	main
 */

int main( int argc, char *argv[] )
{
	int i1;	/* 三つの入力された整数を保存する変数 */

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

	int i3;

	int o1;	/* 小さい順に値を入れる */
	int o2;	/* 小さい順に値を入れる */

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


	s_print_string ( "一つ目の整数を入力してください : " );
	i1 = s_input_int();

	s_print_string ( "二つ目の整数を入力してください : " );
	i2 = s_input_int();

	s_print_string ( "三つ目の整数を入力してください : " );

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


	/*
	 * 数を比較して、一番小さい物をみつける
	 */

	 if ( i1 < i2 ) {
	 	if ( i2 < i3 ) {

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

		} else if ( i1 < i3 ) {
			o1 = i1;
			o2 = i3;
			o3 = i2;
		} else {
			o1 = i3;
			o2 = i1;
			o3 = i2;
		}
	} else {
	 	if ( i1 < i3 ) {
			o1 = i2;
			o2 = i1;
			o3 = i3;
		} else if ( i2 < i3 ) {

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

		} else {
			o1 = i3;
			o2 = i2;
			o3 = i1;
		}
	}

	/*
	 * 出力
	 */


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

	s_print_char ( ',' );
	s_print_int ( o2 );
	s_print_char ( ',' );
	s_print_int ( o3 );
	s_print_newline();

	return 0;
}
入力例
4
1
3
20130705-01.c の実行結果
C:\usr\c\> 20130705-01-QQQQ
一つ目の整数を入力してください : 二つ目の整数を入力してください : 三つ目の整数を入力してください : 1,3,4
C:\usr\c\>