練習 [14] 構造体(3/5)

練習 3(提出プログラム名:p1403.c)

まず,このプログラム(p1403.c)をダウンロードしなさい.
p1403.c はサンプルプログラム4(sample4.c)を次のように編集しようとした途中のもの(未完成)となっている.以下の手順(3)の内容を完成させなさい.

【編集内容】
 (1)マクロ MAX を 6 に変更する(変更済).
 (2)プレイヤー情報をデータファイルから読み込むように変更する(変更済).
 (3)注目しているプレイヤーの近くにいる他のプレイヤーを表示するための
    関数 print_neighbor を新しく作成する(未完成).
 (4)main 関数において,print_neighbor を呼出すように変更する(変更済).

【関数 print_neighbor の仕様】
 ■ 引数 a[ ] :全プレイヤーの情報が入った配列
 ■ 引数 k :注目しているプレイヤーの配列内での添字
  (つまり,注目しているプレイヤーの情報は a[k] となる)
 ■ 動作内容:
  a[k] に該当するプレイヤーの近くにいる他のプレイヤーの名前を表示する(実行例を参照).
  ただし,ここでいう「近くにいる」とは,両者の x 座標の差を dx, y 座標の差を dy としたとき,
   dx*dx + dy*dy < 10 が成立する場合をいう.(自分自身を誤って表示させないこと)

【注意】
ここでは添字が違っていれば別人と考えてよい(つまり i != k ならば,a[i] と a[k] は別人)
また,main 関数の内容は一切変更しないこと.

  • 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
    (データファイル data3-1.txt はここから入手)
データファイル名を入力してください:data3-1.txt
データファイルから 6 人分のデータを読み込みました.⏎
⏎
aman さんの近くにいる人(たち):shiro さん;⏎
taro さんの近くにいる人(たち):saburo さん; goro さん;⏎
jiro さんの近くにいる人(たち):⏎
saburo さんの近くにいる人(たち):taro さん; goro さん;⏎
shiro さんの近くにいる人(たち):aman さん;⏎
goro さんの近くにいる人(たち):taro さん; saburo さん;⏎

  • 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
    (データファイル data3-2.txt はここから入手)
データファイル名を入力してください:data3-2.txt
データファイルから 6 人分のデータを読み込みました.⏎
⏎
aman さんの近くにいる人(たち):shiro さん; goro さん;⏎
taro さんの近くにいる人(たち):saburo さん;⏎
jiro さんの近くにいる人(たち):⏎
saburo さんの近くにいる人(たち):taro さん;⏎
shiro さんの近くにいる人(たち):aman さん; goro さん;⏎
goro さんの近くにいる人(たち):aman さん; shiro さん;⏎

【過去にあったミス(減点となり,やり直しを命じられる)】
■ 2 種類の実行例を確認せずに提出してしまっている.
 (例1)本人を近くにいる人として表示させてしまっている.
 (例2)位置座標が重なっている場合(実行例その2の aman と goro)について,うまく表示できていない.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習 4 (p1404.c) ]