関数ポインタに関しての理解度と応用の確認を行います。また、何気に過去に提示した内容の理解がないと解答が難しいかもしれないのも含みます。問題数はたった3つですが、心して取り掛かって頂ければと。夏休みですしお盆ですし酷暑ですし(関係ない)。


  • 問29. 状態遷移の応用
以前ALG 初期化(宿題の解説で作成した攻撃目標入力のプログラムを、esc キーを押したら、英字入力をキャンセルできるようにせよ。下記の例では A の入力後に esc キーを押して A の入力をキャンセルしている。
以前提示したプログラム(Yes
以前のプログラムは下記からダウンロードするように。


  • 問30. 状態遷移を関数ポインタで実装
以前ALG 初期化(宿題の解説で作成した攻撃目標入力と当たり判定で、状態を示す gGame グローバル変数を使っていたが、これを使わず関数ポインタで同等処理を実装せよ。具体的には…

// 状態遷移 enum EGameStatus { DEPLOY, DRAW, SURE, ATTACK }; EGameStatus gGame = DEPLOY;

この状態遷移を管理しているグローバル変数と、この変数に値を代入したり参照している箇所を、関数ポインタで動作するように変更することになる。EGameStatus は削除する。


  • 問31. コールバック関数の実装
下記のコードで配列 numbers に -1000 から +1000 までのランダムな数値を作った。

srand((unsigned)time(NULL)); int numbers[100] = { 0 }; for (int i = 0; i < _countof(numbers); ++i) { numbers[i] = rand() % (1000 * 2 + 1) - 1000; }

この numbers 配列に対して、

qsort(numbers, _countof(numbers), sizeof(int), nearZero);

このようにソート関数 qsort を呼び出すとして、コールバック関数 nearZero を作成せよ。nearZero の動作は 0 に近い順とする。また、コールバック関数の記述を複数考えて欲しい。
※ 最低2例、出来れば3例。全く違う実装とせよ
すき家 牛丼の具 5パック (135g×5) 並盛 冷凍食品
株式会社トロナジャパン
※ こういうのはちょっとお腹空いた時にパッと食べられるしすき家だから味も安心だから良いよねー❤