2017年12月24日日曜日

開発環境

Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の7章(高度な関数 - 関数を最大限に活用する)、自分で考えてみよう(p. 339)を取り組んでみる。

自分で考えてみよう(p. 339)

コード

#include <stdlib.h> // system
#include <stdio.h>

enum response_type
{
 DUMP,
 SECOND_CHANCE,
 MARRIAGE
};
typedef struct
{
 char *name;
 enum response_type type;
} Response;

void dump(Response r)
{
 printf("%sさんへ、\n", r.name);
 puts("残念ながら、前回のデートの結果、\n"
  "再度お会いすることはないと連絡を受けました");
}
void second_chance(Response r)
{
 printf("%sさんへ\n", r.name);
 puts("よいお知らせです。前回のデートの結果\n"
  "もう一度お会いしたいとの連絡を受けました。至急ご連絡ください。");
}
void marriage(Response r)
{
 printf("%sさんへ\n", r.name);
 puts("おめでとうございます!前回のデートの結果、"
  "結婚を申しこみたいとの連絡を受けました。");
}

void(*replies[])(Response) = { dump, second_chance, marriage };

int main()
{
 Response r[] = {
  {"マイク", DUMP},
  {"ルイス", SECOND_CHANCE},
  {"マット", SECOND_CHANCE},
  {"ウィリアム", MARRIAGE}
 };

 for (size_t i = 0; i < 4; i++)
 {
  replies[r[i].type](r[i]);
 }

 system("pause");
 return 0;
}

入出力結果(コマンドプロンプト)

マイクさんへ、
残念ながら、前回のデートの結果、
再度お会いすることはないと連絡を受けました
ルイスさんへ
よいお知らせです。前回のデートの結果
もう一度お会いしたいとの連絡を受けました。至急ご連絡ください。
マットさんへ
よいお知らせです。前回のデートの結果
もう一度お会いしたいとの連絡を受けました。至急ご連絡ください。
ウィリアムさんへ
おめでとうございます!前回のデートの結果、結婚を申しこみたいとの連絡を受けました。
続行するには何かキーを押してください . . .

0 コメント:

コメントを投稿