#include #include #include #define MAXPOINT (20000) int x[MAXPOINT]; int y[MAXPOINT]; int max_id; double result = -1.; void initialize(); void finalize(); /*********   解答プログラムの作成方法   以下の main() を書き換え,面積を計算するプログラムを作成すること.   結果を result に代入すること(問3では単純多角形であるかのチェック   も行うこと).   注1)main() 内の変更・削除不可の行は変えないこと.   注2)参考のため,以下に全点データを出力するプログラムを示している      が,これは削除,修正してかまわない.   注3)関数定義等を適宜加えてよい.ただし,1つのプログラムファイル      として提出すること. */ /*********   説明:   initialize(), finalize() 呼び出しの間のみ以下が利用可能となる   x[i]: i番目の点の x 座標   y[i]: i番目の点の y 座標   max_id: 点の総数   result: 結果保存先(double 型) */ int main(int argc, char** argv){ /* 変更・修正不可 */ int i; initialize(); /* 変更・修正不可 */ for(i = 0; i < max_id; i++){ printf("%d %d\n", x[i], y[i]); } finalize(); /* 変更・修正不可 */ return EXIT_SUCCESS; /* 変更・修正不可 */ } /*********   以下はすべて変更・修正不可 */ #define MAXBUF (256) void initialize() { char buffer[MAXBUF]; int tx = -1, ty = -1; max_id = 0; while(fgets(buffer, MAXBUF, stdin) != NULL){ if(strchr(buffer, '\n') == NULL){ fprintf(stderr, "Data reading error: please report to the Supercon08 committee this message\n"); exit(EXIT_FAILURE); } if(sscanf(buffer, "%d %d\n", &tx, &ty) == 2){ if((tx < 0) && (ty < 0)){ return; } if(max_id > MAXPOINT){ return; } x[max_id] = tx; y[max_id] = ty; max_id++; } } } void finalize() { printf("Final Answer: %f\n", result); }