/* ACM North Central Region, 1993-94 Problem E, The Finite State Text-Processing Machine Ed Karrels, April 1996 */ #include typedef struct { signed char *in_set, *out_str; char st_nm[9]; } Trans; typedef struct { char name[9]; int n_tr; Trans *tr; } State; signed char *CvtStr(char *str) { char *outs, *r, *w; outs = (char*)malloc(strlen(str)+1); r = str; w = outs; while (*r) { if (*r == '\\') { r++; switch (*r) { case 'b': *w++ = ' '; break; case 'n': *w++ = '\n'; break; case '\\': *w++ = '\\'; break; case '0': *w++ = 0; break; case 'c': *w++ = -1; } r++; } else { *w++ = *r++; } } *w = 0; return outs; } int FindSt(State *st, int n_st, char *st_nm) { int i; for (i=0; i