2018年2月17日土曜日

開発環境

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

プールパズル(p. 335)

//
//  main.c
//  sample1
//
//  Created by kamimura on 2018/02/14.
//  Copyright © 2018 kamimura. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>
#include <string.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("おめでとうございます!前回のデートの結果、\n"
         "結婚を申し込みたいとの連絡を受けました。");
}

int main(int argc, const char * argv[]) {
    Response r[] = {
        {"マイク", DUMP},
        {"ルイス", SECOND_CHANCE},
        {"マット", SECOND_CHANCE},
        {"ウィリアム", MARRIAGE}
    };
    for (size_t i = 0; i < 4; i++) {
        switch (r[i].type) {
            case DUMP:
                dump(r[i]);
                break;
            case SECOND_CHANCE:
                second_chance(r[i]);
                break;
            case MARRIAGE:
                marriage(r[i]);
                break;
            default:
                break;
        }
    }
    return 0;
}

入出力結果(Terminal)

マイクさんへ
残念ながら、前回のデートの結果、
再度お会いすることはないとの連絡を受けました。
ルイスさんへ
良いお知らせです。前回のデートの結果、
もう一度お会いしたいとの連絡を受けました。至急ご連絡ください。
マットさんへ
良いお知らせです。前回のデートの結果、
もう一度お会いしたいとの連絡を受けました。至急ご連絡ください。
ウィリアムさんへ
おめでとうございます!前回のデートの結果、
結婚を申し込みたいとの連絡を受けました。
Program ended with exit code: 0

0 コメント:

コメントを投稿