2018年4月18日水曜日

開発環境

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

エクササイズ(p. 347)

Makefile

CC = cc

all: run

sample: sample.c
 $(CC) sample.c -o sample

run: sample
 ./sample
#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:
    return 0;
  }
}
    
double total(int args, ...) {
  double total = 0;
  va_list ap;
  
  va_start(ap, args);
  for (int i = 0; i < args; i++) {
    total += price(va_arg(ap, enum drink));
  }
  va_end(ap);
  
  return total;
}

int main() {
  printf("価格は%.2fです。\n",
         total(3, MONKEY_GLAND, MUDSLIDE, FUZZY_NAVEL));
}

入出力結果(Terminal)

$ make
cc sample.c -o sample
./sample
価格は16.92です。
$

0 コメント:

コメントを投稿