#include #include typedef struct { int x; /* アリの位置(横) */ int y; /* アリの位置(縦) */ char dr; /* 'R':右向き 'D':下向き */ int in; /* 1:アリは盤上にいる 0:既に盤外に出ている */ }AntPos; int main(int argc, char *argv[]) { int w, h, n; /* 幅、高さ、初期状態でのアリの数 */ int t=0; /* 時間ステップのカウンタ */ int i, j, num; AntPos *ant; FILE *ifile; if (argc < 2) { printf( "error: input file name is required!\n"); exit(1); } /* ファイルオープン */ ifile = fopen( argv[1], "r" ); if (ifile == NULL) { printf( "error: input file cannot be opened!\n"); /* メッセージは適当に */ exit(2); } /* ファイルの1行目から盤の幅w、高さh、アリの数nを読み込む */ fscanf( ifile, "%d%d%d", &w, &h, &n ); // printf("width=%d height=%d number=%d\n", w, h, n); /* アリの情報を収めておく構造体配列を動的に確保 */ ant = (AntPos *) malloc( sizeof(AntPos)*n ); /* ファイルから各アリの位置と向きを読み込む。なお、文字型を読む時は " %c"のように%c手前にスペースを入れると、R/D手前のスペースを読み飛ばせる 読み込めたら、確認のため読んだ情報を一度出力しておこう */ for ( i=0; i 0){ /* 時間の更新 */ t++; for ( i=0; i w || ant[i].y > h) { printf( "Step %d: Ant No.%d has gone out to (%d,%d).\n", t, i+1, ant[i].x, ant[i].y ); ant[i].in = 0; /* 盤上にいないことを示すフラグ */ num--; /* 盤上のアリの数は1減る */ } /* 2匹のアリが同じマスにいるかどうかのチェックと向きの更新 */ for ( j=0; j