|
|
1.1 ! root 1: /* ! 2: This program is, essentially, a cross product generator. It takes ! 3: an input file which is said to consist of a number of lines, and ! 4: expands each line. A line like ! 5: (a,b)(c,d) ! 6: will be expanded to lines like ! 7: ac ! 8: ad ! 9: bc ! 10: bd ! 11: (without regard for the ORDER of the output; ie: the lines can appear ! 12: in any order). ! 13: ! 14: Parenthesis can be nested, so ! 15: (a,b)(c(d,e),f) ! 16: will produce ! 17: acd ! 18: ace ! 19: af ! 20: bcd ! 21: bce ! 22: bf ! 23: */ ! 24: ! 25: ! 26: #include <stdio.h> ! 27: ! 28: char leftParen, /* The left parenthesis character */ ! 29: rightParen; /* The right parenthesis character */ ! 30: ! 31: ! 32: /* Finds next occurrence of 'character' at this level of nesting. ! 33: Returns 0 if no such character found. ! 34: */ ! 35: ! 36: char * ! 37: ThisLevel(string, character) ! 38: char *string, character; ! 39: { ! 40: int level; /* Level 0 is OUR level */ ! 41: ! 42: level = 0; ! 43: ! 44: while (*string != '\0') { ! 45: if (*string == leftParen) ! 46: level++; ! 47: else if (*string == rightParen) { ! 48: level--; ! 49: if (level < 0) ! 50: return(0); ! 51: } ! 52: if ((level == 0) && (*string == character)) ! 53: return(string); ! 54: string++; ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.