ここまでかなりポインタと文字列操作について解説してきたので、そろそろ理解度確認が必要じゃないかなということで、久しぶりに実力確認テストを実施します!今回も前回のテスト結果で公開した Q23.cpp を改造して行います。あわせて確認するようにしてください。

※ 20230505 09:50 追加
定義ファイルも必要に応じてダウンロード出来るようにしておきました。
Define.zip


  • 問24. ポインタへの置き換え
艦船構造体の名前をポインタに置き換えて、ビルドが通るように改変せよ。

struct TShip { char Name[10]; // 名前 EShip Type; // タイプ Point Position; // 座標 bool IsVertical; // 縦方向か? };


  • 問25. 攻撃目標入力
攻撃目標入力最初に画面上に Attack ? : と表示する。キーボードから英字、数字の順に入力して、その入力状態を示せ。
  1. キーボードからの1文字入力は _getch() を利用する
  2. 入力された英字は A から FIELD_WIDTH の数だけ反応する
  3. 入力された数字は 0 から FIELD_HEIGHT の数だけ反応する
  4. 英字の入力は大文字でも小文字でも反応する
_getch() を使用するには、#include <conio.h> を記述する。英字の入力は FIELD_WIDTH = 10 であれば A,B,C,D,E,F,G,H,I,J の 10種類のみ反応させる。数字の入力は FIELD_HEIGHT = 10 であれば 0~9 までとなる。英字入力は半角のみ対象とし、全角文字は対象外とする。

押された結果は参考画像のように表示せよ。
※ FIELD_HEIGHT は 10を超えた数は考慮不要とする。
 とりあえずテストのため入力は無限ループとする。


  • 問26. 関数使用方法の調査1
問25 の「大文字でも小文字でも反応」に tolower を使用せよ。本件関数の使い方は自ら調査して使用すること。


  • 問27. 関数使用方法の調査2
tolower 以外で「大文字でも小文字でも反応」に使用できる関数を調査して使用せよ。


  • 問28. 当たり判定
攻撃目標の設定後、その海域に艦船が居たら命中!と表示せよ。何もなければハズレ!と表示する。一度当たりの表示が出た海域にもう一度攻撃を加えて場合は無効と表示すること。
攻撃当たり判定