2014年4月8日火曜日

開発環境

Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の7章(高度な関数)、エクササイズ(p.347)を解いてみる。

その他参考書籍

エクササイズ(p.347)

コード(BBEdit, Emacs)

sample347header.h

enum drink {
  MUDSLIDE, FUZZY_NAVEL, MONKEY_GLAND, ZOMBIE
};
double price(enum drink d);

sample347.c

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

double total(int args, ...)
{
  double total = 0;
  va_list ap;
  int i;

  va_start(ap, args);
  for (i = 0; i < args; ++i)
    total += price(va_arg(ap, enum drink));
  va_end(ap);
  
  return total;
}
  
int main(int argc, char *argv[])
{
  printf("%.2lf %.2lf %.2lf %.2lf %.2lf\n", total(0), total(1, MUDSLIDE),
         total(2, MUDSLIDE, FUZZY_NAVEL),
         total(3, MUDSLIDE, FUZZY_NAVEL, MONKEY_GLAND),
         total(4, MUDSLIDE, FUZZY_NAVEL, MONKEY_GLAND, ZOMBIE));
  
  return (0);
}

Makefile

all: sample347

sample347: sample347.o sample347header.o
 cc -g -o sample347 sample347.o sample347header.o

sample347.o: sample347.c sample347header.h
 cc -c sample347.c

sample347header.o: sample347header.c sample347header.h
 cc -c sample347header.c

入出力結果(Terminal)

$ make && ./sample347
cc -c sample347.c
cc -c sample347header.c
cc -g -o sample347 sample347.o sample347header.o
0.00 6.79 12.10 16.92 22.81
$

0 コメント:

コメントを投稿