2018年2月19日月曜日

開発環境

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

エクササイズ(p. 347)

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

#include <stdio.h>
#include <stdarg.h>

enum drink {
    MUDSLIDE,
    FUZZY_NAVEL,
    MONKEY_GLAND,
    ZOMBIE
};
double price(enum drink d) {
    switch (d) {
        case MUDSLIDE:
            return 6.79;
        case FUZZY_NAVEL:
            return 5.31;
        case MONKEY_GLAND:
            return 4.82;
        case ZOMBIE:
            return 5.89;
        default:
            break;
    }
}
double total(int args, ...) {
    double total = 0;
    va_list ap;
    va_start(ap, args);
    for (size_t i = 0; i < args; i++) {
        total += price(va_arg(ap, enum drink));
    }
    return total;
}
int main(int argc, const char * argv[]) {
    printf("価格は%.2fです。\n",
           total(3, MONKEY_GLAND, MUDSLIDE, FUZZY_NAVEL));
    return 0;
}

入出力結果(Terminal)

価格は16.92です。
Program ended with exit code: 0

0 コメント:

コメントを投稿