#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
typedef unsigned char uchar_t;
static void printline( FILE* stream, const char* head, int min, int max, int mul, const char* fmt, char end)
{
int i;
for( i=min; i<=max; ++i )
}
static void strpad( char* s, int size, char pad, char end )
{
if( size < 2 ){
*s = '\0' ;
return ;
}
s[ size - 2 ] = end ;
s[ size - 1 ] = '\0';
}
int main(int argc, char* argv[])
{
uchar_t nketa;
char *fmt, *head1, *head2;
char tmp[8];
int min, max, i;
FILE *stream;
//if( argc < 3 ){
// fprintf( stderr, "Usage %s <min> <max>\n", argv[0] );
// return 1;
//}
//min = atoi(argv[1]);
//max = atoi(argv[2]);
fscanf( stdin
, "%d %d", &min
, &max
); snprintf( tmp
, sizeof tmp
, "%d", max
*max
);
if( nketa <= 1 )
nketa = 2;
if( min < 0 || max < 0 )
nketa++;
fmt
= (char*)malloc( nketa
+ 4 ); head1
= (char*)malloc( nketa
+ 2 ); head2
= (char*)malloc( nketa
+ 2 );
snprintf( fmt
, nketa
+ 4, "%%%dd|", nketa
); strpad( head1, nketa + 2, ' ', '|' ) ;
strpad( head2, nketa + 2, '-', '+' ) ;
//if( argc == 4 ){
// stream = fopen( argv[3], "w" );
// if(! stream ){
// perror( argv[3] );
// exit(EXIT_FAILURE);
// }
//} else
stream = stdout;
printline( stream, head1, min, max, 1, fmt, '\n' );
printline( stream, head2, min, max, 1, head2, '\n' );
for( i=min; i<=max; ++i )
{
printline( stream, fmt, min, max, i, fmt, '\n' );
printline( stream, head2, min, max, 1, head2, '\n' );
}
if( stream )
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8ZXJybm8uaD4KCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90OwoKc3RhdGljIHZvaWQgcHJpbnRsaW5lKCBGSUxFKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGhlYWQsIGludCBtaW4sIGludCBtYXgsIGludCBtdWwsIGNvbnN0IGNoYXIqIGZtdCwgY2hhciBlbmQpCnsKCWludCBpOwoJZnByaW50ZihzdHJlYW0sIGhlYWQsIG11bCk7Cglmb3IoIGk9bWluOyBpPD1tYXg7ICsraSApCgkJZnByaW50ZihzdHJlYW0sIGZtdCwgaSAqIG11bCk7CglmcHJpbnRmKHN0cmVhbSwgIiVjIiwgZW5kKTsKfQoKc3RhdGljIHZvaWQgc3RycGFkKCBjaGFyKiBzLCBpbnQgc2l6ZSwgY2hhciBwYWQsIGNoYXIgZW5kICkKewoJaWYoIHNpemUgPCAyICl7CgkJKnMgPSAnXDAnIDsKCQlyZXR1cm4gOwoJfQoJbWVtc2V0KCBzLCBwYWQsIHNpemUgLSAyICk7CglzWyBzaXplIC0gMiBdID0gZW5kIDsKCXNbIHNpemUgLSAxIF0gPSAnXDAnOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQp7Cgl1Y2hhcl90IG5rZXRhOwoJY2hhciAqZm10LCAqaGVhZDEsICpoZWFkMjsKCWNoYXIgdG1wWzhdOwoJaW50IG1pbiwgbWF4LCBpOwoJRklMRSAqc3RyZWFtOwoJCgkvL2lmKCBhcmdjIDwgMyApewoJLy8JZnByaW50Ziggc3RkZXJyLCAiVXNhZ2UgJXMgPG1pbj4gPG1heD5cbiIsIGFyZ3ZbMF0gKTsKCS8vCXJldHVybiAxOwoJLy99CgkvL21pbiA9IGF0b2koYXJndlsxXSk7CgkvL21heCA9IGF0b2koYXJndlsyXSk7Cglmc2NhbmYoIHN0ZGluLCAiJWQgJWQiLCAmbWluLCAmbWF4ICk7CglzbnByaW50ZiggdG1wLCBzaXplb2YgdG1wLCAiJWQiLCBtYXgqbWF4ICk7Cglua2V0YSA9IHN0cmxlbiggdG1wICk7CgkKCWlmKCBua2V0YSA8PSAxICkKCQlua2V0YSA9IDI7CglpZiggbWluIDwgMCB8fCBtYXggPCAwICkKCQlua2V0YSsrOwoJCglmbXQgPSAoY2hhciopbWFsbG9jKCBua2V0YSArIDQgKTsKCWhlYWQxID0gKGNoYXIqKW1hbGxvYyggbmtldGEgKyAyICk7CgloZWFkMiA9IChjaGFyKiltYWxsb2MoIG5rZXRhICsgMiApOwoJCglzbnByaW50ZiggZm10LCBua2V0YSArIDQsICIlJSVkZHwiLCBua2V0YSApOwoJc3RycGFkKCBoZWFkMSwgbmtldGEgKyAyLCAnICcsICd8JyApIDsKCXN0cnBhZCggaGVhZDIsIG5rZXRhICsgMiwgJy0nLCAnKycgKSA7CgkKCS8vaWYoIGFyZ2MgPT0gNCApewoJLy8Jc3RyZWFtID0gZm9wZW4oIGFyZ3ZbM10sICJ3IiApOwoJLy8JaWYoISBzdHJlYW0gKXsKCS8vCQlwZXJyb3IoIGFyZ3ZbM10gKTsKCS8vCQlleGl0KEVYSVRfRkFJTFVSRSk7CgkvLwl9CgkvL30gZWxzZQoJCXN0cmVhbSA9IHN0ZG91dDsKCQoJcHJpbnRsaW5lKCBzdHJlYW0sIGhlYWQxLCBtaW4sIG1heCwgMSwgZm10LCAnXG4nICk7CglwcmludGxpbmUoIHN0cmVhbSwgaGVhZDIsIG1pbiwgbWF4LCAxLCBoZWFkMiwgJ1xuJyApOwoJZm9yKCBpPW1pbjsgaTw9bWF4OyArK2kgKQoJewoJCXByaW50bGluZSggc3RyZWFtLCBmbXQsIG1pbiwgbWF4LCBpLCBmbXQsICdcbicgKTsKCQlwcmludGxpbmUoIHN0cmVhbSwgaGVhZDIsIG1pbiwgbWF4LCAxLCBoZWFkMiwgJ1xuJyApOwoJfQoJaWYoIHN0cmVhbSApCgkJZmNsb3NlKCBzdHJlYW0gKTsKCWZyZWUoZm10KTsKCWZyZWUoaGVhZDEpOwoJZnJlZShoZWFkMik7CglyZXR1cm4gMDsKfQ==