例題 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 の方を 実引数(じつひきすう) といいます.) |