/* mccarthy.C */ #include <stdio.h> int mccarthy( int n ) { if ( n > 100 ) return n - 10; else return mccarthy( mccarthy( n + 11 ) ); } int old_main() { int ret, val, count = 0; while ( !feof( stdin ) ) { int ch = fgetc( stdin ); if ( ch < 0 ) // Check end of input break; if ( ch > '\r' ) count++; } val = mccarthy( count ); printf( "mccarth( %d ) = %d\n", count, val ); ret = val & 0x1; printf( "Returning : %d\n", ret ); return ret; } /* mccarthy.C - End of File ------------------------------------------*/ #include <assert.h> bool is_a_n__b_n__c_n() { int count_a = 0, count_b = 0, count_c = 0; while ( !feof( stdin ) ) { int ch; ch = fgetc( stdin ); if ( ch < 0 ) break; if ( ch == 'a' ) { count_a++; if ( ( count_b > 0 ) || ( count_c > 0 ) ) return false; } if ( ch == 'b' ) { count_b++; if ( count_c > 0 ) return false; } if ( ch == 'c' ) count_c++; } return ( count_a == count_b ) && ( count_b == count_c ); } int run_old_main( const char * w ) { FILE * fl = fopen( "tmp", "wt" ); assert( fl != NULL ); fputs( w, fl ); fclose( fl ); stdin = fopen( "tmp", "rt" ); assert( stdin != NULL ); return old_main(); } int new_main( const char * w ) { if ( is_a_n__b_n__c_n() ) return 1; if ( run_old_main( w ) == 1 ) return 1; else return 0; } int main() { int ret = new_main( "abab" ); printf( "returning %d\n", ret ); return ret; }