例題 12 次元のベクトルを表現するための構造体 vector を定義しなさい.そして,その内容を
(x, y)
のかたちで表示するための関数 printVector を作りなさい.
ただし,ベクトルの各成分は int 型とする. コーディング例
1 /*
2 * プログラミング演習 第 8 回
3 * [例題 1]
4 * (C) 2006 Hirohisa AMAN <aman@cs.ehime-u.ac.jp, aman@computer.org>
5 */
6 #include <stdio.h>
7
8 /* 構造体 vector の宣言 */
9 struct vector {
10 int x;
11 int y;
12 };
13
14 /* ベクトル表示のための関数 */
15 void printVector( struct vector v ){
16
17 printf("( %d, %d )\n", v.x, v.y );
18
19 }
20
21 int main(void){
22 struct vector data;
23
24 scanf("%d %d", &data.x, &data.y);
25
26 printVector(data);
27
28 return 0;
29 }
※左端の数字は行番号であり,ソースコードには含まれない点に注意!
コンパイル & 実行例
$ gcc example8_1.c [Enter]
$ ./a.out [Enter]
3, 12 [Enter]
( 3, 12 )
解説まず,構造体(新たに struct vector という型)を宣言します:
8 /* 構造体 vector の宣言 */
9 struct vector {
10 int x;
11 int y;
12 };
次に,目的の関数 printVector を作ります:
15 void printVector( struct vector v ){
16
17 printf("( %d, %d )\n", v.x, v.y );
18
19 }
内容は非常にシンプルです.
関数 printVector を呼び出す時に struct vector 型の変数がカッコ内に指定される ものとしておきます. ここではその変数の名前を 仮に v として おきます. (※既に知っていると思いますが, これを 仮引数(かりひきすう) といいます.) この場合,ベクトルの各要素は v.x と v.y になりますので, これらを目的のかたちで出力するコードを書いています. main 関数の中では data という名前でベクトルを用意し, その各要素に整数を読み込んでいます:
22 struct vector data;
23
24 scanf("%d %d", &data.x, &data.y);
scanf で読み込む場合,変数名の前に
&(アンパサンド)が付くのを忘れないようにして下さい.
最後に自作した関数 printVector を呼び出して, data の内容を目的のかたちで表示させます:
26 printVector(data);
この際,
data の内容が関数の中では v へコピー
されます.
つまり,関数の中で「仮に v
としていた」ところが,「実際には data
となる」わけです.
(※これも知っていると思いますが,data の方を
実引数(じつひきすう)
といいます.)
|