Powered by SmartDoc

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

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

目次

講義資料

当日の OHP 資料

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

本日の課題

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

課題 20151211-01 : ポインター演算子を利用して構造体を操作

Download : 20151211-01.c ( SJIS 版 )

20151211-01.c
/*
 * 20151211-01-QQQQ.c
 * ポインター演算子を利用して構造体を操作
 */

#include <stdio.h>

/*
 *	二次元の「点」を表す構造体型 Point2D の宣言
 */

typedef	struct {
	int x;
	int y;
} Point2D;

/*
 *	move_to_x_axis_symmetry ( Point2D *p2dPtr )
 *		指定された Point2D 型の変数へのポインターの値を x 軸に対象な点に移す
 *		 Point2D *p2dPtr : Point2D 型の変数へのポインターの値
 */

void move_to_x_axis_symmetry ( Point2D *p2dPtr ) {

	/* x 軸に対称なので、y 座標の符号だけを変更 */

	p2dPtr -> y = - p2dPtr -> y;	/* y 座標の符号を逆転 */

}

/*
 *	move_to_y_axis_symmetry ( Point2D *p2dPtr )
 *		指定された Point2D 型の変数へのポインターの値を y 軸に対象な点に移す
 *		Point2D *p2dPtr : Point2D 型の変数へのポインターの値
 */

void move_to_y_axis_symmetry ( Point2D *p2dPtr ) {

	/* y 軸に対称なので、x 座標の符号だけを変更 */


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


}

/*
 *	move_to_origin_symmetry ( Point2D *p2dPtr )
 *		指定された Point2D 型の変数へのポインターの値を 原点に対象な点に移す
 *		Point2D *p2dPtr : Point2D 型の変数へのポインターの値
 */

void move_to_origin_symmetry ( Point2D *p2dPtr )	{
	/* 原点対称に移動するには、
	   x 軸対称に移動して、から y 軸対称に移動すればよい
	*/

	move_to_x_axis_symmetry ( p2dPtr );	/* 引数は初めからポインター値 */

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


}

/*
 *	print_point2d ( Point2D p2dVar )
 *		指定された Point2D 型の値を表示する
 *		Point2D p2dVar; Point2D 型の値
 */

void print_point2d ( Point2D p2dVar ) {

	 /* x, y 座標をそれぞれ出力するだけ */
	 printf ( "(%d, %d)", p2dVar.x, p2dVar.y );

}

/*
 *
 */

int main ( void ) {
	Point2D Pa = { -1, 3 };	/* 座標 ( -1, 3 ) の点 Pa */
	Point2D Pb = { 2, 5 };	/* 座標 ( 2, 5 ) の点 Pb */

	printf ( "Pa = " );
	print_point2d ( Pa );				/* Point2D の値を指定 */
	printf ( "\nを、x 軸対称な位置に移動すると.." );
	move_to_x_axis_symmetry ( &Pa );	/* Point2D 型の変数のポインター値を指定 */
	print_point2d ( Pa );
	printf ( "になります\n" );

	printf ( "Pb = " );
	print_point2d ( Pb );
	printf ( "\nを、原点対称な位置に移動すると.." );

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

	print_point2d ( Pb );
	printf ( "になります\n" );

    return 0;

}

/*
 *
 */
入力例
2.3
9.1
5.9
2.7
3.2
20151211-01.c の実行結果
$ ./20151211-01-QQQQ.exe
Pa = (-1, 3)
を、x 軸対称な位置に移動すると..(-1, -3)になります
Pb = (2, 5)
を、原点対称な位置に移動すると..(-2, -5)になります
$ 

Links

色々