/* ex8-1.c: * 莠、蟾ョ轤ケ讀懃エ「�医Ο繝シ繝槫ュ励〒莠、蟾ョ轤ケ蜷阪r繧ュ繝シ繝懊�繝峨°繧牙�蜉帙@縺ヲ逕サ髱「縺ォ莠、蟾ョ轤ケ諠��ア繧貞�蜉帙☆繧九�繝ュ繧ー繝ゥ繝� */ #include <stdio.h> #include <math.h> #include <string.h> #define CROSSING_SIZE 100 /* 莠、蟾ョ轤ケ謨ー=100 */ #define MAX_NAME_SIZE 50 /* 譛螟ァ譁�ュ玲焚50譁�ュ�(蜊願ァ�) */ typedef struct { double x, y; /* 菴咲スョ x, y */ } Position; /* 菴咲スョ繧定。ィ縺呎ァ矩�菴� */ typedef struct { int id; /* 莠、蟾ョ轤ケ逡ェ蜿キ */ Position pos; /* 菴咲スョ繧定。ィ縺呎ァ矩�菴� */ double wait; /* 蟷ウ蝮�セ�■譎る俣 */ char jname[MAX_NAME_SIZE]; /* 譌・譛ャ隱樔コ、蟾ョ轤ケ蜷� */ /* 蜷榊燕縺御コ後▽縺ォ*/ char ename[MAX_NAME_SIZE]; /* 繝ュ繝シ繝槫ュ嶺コ、蟾ョ轤ケ蜷� */ /* 縺ェ縺」縺ヲ縺セ縺� */ int points; /* 莠、蟾ョ驕楢キッ謨ー */ int next[5]; /* 髫」謗・縺吶k莠、蟾ョ轤ケ逡ェ蜿キ */ } Crossing; Crossing cross[CROSSING_SIZE]; int map_read(char *filename) { /* 縺吶〒縺ォ逕ィ諢上@縺ヲ縺ゅj縺セ縺吶�縺ァ * int map_read(char *filename) 縺ョ縺ソ * readfile.c 縺九i繧ウ繝斐�縺励※荳九&縺� */ } void print_cross(int i) { /* i 逡ェ逶ョ縺ョ莠、蟾ョ轤ケ 縺ョ陦ィ遉コ髢「謨ー 螂ス縺阪↓謾ケ騾�縺励※縺上□縺輔>*/ int j; printf("莠、蟾ョ轤ケ逡ェ蜿キ:%2d, 蠎ァ讓�(%5.2lf,%5.2lf), 蜷榊燕: %s ( %s ),", cross[i].id, cross[i].pos.x, cross[i].pos.y, cross[i].jname,cross[i].ename); printf("\n 蠕�■譎る俣:%5.1lf, 髫」謗・莠、蟾ョ轤ケ :%d蛟� ( ", cross[i].wait, cross[i].points); /* 莠、蟾ョ驕楢キッ謨ー縺�縺醍ケー繧願ソ斐@ */ for (j = 0; j < cross[i].points; j++) printf("%d ", cross[i].next[j]); printf(")\n\n"); } /* 縺薙�霎コ繧翫°繧牙�蜉帙@縺ヲ縺�∪縺帙s */ int search_cross(int num) { /* 螳悟�荳閾エ繧オ繝シ繝√�繝励Ο繧ー繝ゥ繝�繧偵%縺ョ陦御サ・髯阪↓蜈・蜉帙@縺ヲ荳九&縺� */ int i; int f = -1; char input[200]; printf("莠、蟾ョ轤ケ蜷阪r蜈・蜉帙@縺ヲ縺上□縺輔>(繝ュ繝シ繝槫ュ�): "); scanf("%s", input); puts(""); for (i = 0; i < num; i++) { /* i逡ェ逶ョ縺ョ莠、蟾ョ轤ケ蜷�(ename)縺ィ蜈・蜉帙@縺殃nput 縺御ク閾エ縺励◆繧�: 閠�∴縺ヲ縺上□縺輔> */ { print_cross(i); /* 陦ィ遉コ */ f = i; /* 隕九▽縺代◆逡ェ蜿キ菫晄戟 */ } } if (f < 0) printf("%s 縺ッ縺ソ縺、縺九j縺セ縺帙s縺ァ縺励◆\n", input); return f; /* 隕九▽縺九▲縺ヲ縺�◆繧峨√◎繧後r縲√↑縺代l縺ー -1 繧定ソ斐@縺セ縺� */ } int main(void) { int crossing_number; /* 莠、蟾ョ轤ケ謨ー */ /* 繝輔ぃ繧、繝ォ縺ョ隱ュ縺ソ霎シ縺ソ */ crossing_number = map_read("map2.dat"); printf("loaded %d crossings\n", crossing_number); search_cross(crossing_number); return 0; }