#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 uchar_t ketasuu( int n )
{
uchar_t count = 0;
do {
n /= 10;
++count;
} while( n > 0 );
return count;
}
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;
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
); nketa = ketasuu(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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8ZXJybm8uaD4KCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90OwoKc3RhdGljIHZvaWQgcHJpbnRsaW5lKCBGSUxFKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGhlYWQsIGludCBtaW4sIGludCBtYXgsIGludCBtdWwsIGNvbnN0IGNoYXIqIGZtdCwgY2hhciBlbmQpCnsKCWludCBpOwoJZnByaW50ZihzdHJlYW0sIGhlYWQsIG11bCk7Cglmb3IoIGk9bWluOyBpPD1tYXg7ICsraSApCgkJZnByaW50ZihzdHJlYW0sIGZtdCwgaSAqIG11bCk7CglmcHJpbnRmKHN0cmVhbSwgIiVjIiwgZW5kKTsKfQoKc3RhdGljIHVjaGFyX3Qga2V0YXN1dSggaW50IG4gKQp7Cgl1Y2hhcl90IGNvdW50ID0gMDsKCWRvIHsKCQluIC89IDEwOwoJCSsrY291bnQ7Cgl9IHdoaWxlKCBuID4gMCApOwoJcmV0dXJuIGNvdW50Owp9CgpzdGF0aWMgdm9pZCBzdHJwYWQoIGNoYXIqIHMsIGludCBzaXplLCBjaGFyIHBhZCwgY2hhciBlbmQgKQp7CglpZiggc2l6ZSA8IDIgKXsKCQkqcyA9ICdcMCcgOwoJCXJldHVybiA7Cgl9CgltZW1zZXQoIHMsIHBhZCwgc2l6ZSAtIDIgKTsKCXNbIHNpemUgLSAyIF0gPSBlbmQgOwoJc1sgc2l6ZSAtIDEgXSA9ICdcMCc7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKCXVjaGFyX3QgbmtldGE7CgljaGFyICpmbXQsICpoZWFkMSwgKmhlYWQyOwoJaW50IG1pbiwgbWF4LCBpOwoJRklMRSAqc3RyZWFtOwoJCgkvL2lmKCBhcmdjIDwgMyApewoJLy8JZnByaW50Ziggc3RkZXJyLCAiVXNhZ2UgJXMgPG1pbj4gPG1heD5cbiIsIGFyZ3ZbMF0gKTsKCS8vCXJldHVybiAxOwoJLy99CgkvL21pbiA9IGF0b2koYXJndlsxXSk7CgkvL21heCA9IGF0b2koYXJndlsyXSk7Cglmc2NhbmYoIHN0ZGluLCAiJWQgJWQiLCAmbWluLCAmbWF4ICk7Cglua2V0YSA9IGtldGFzdXUobWF4Km1heCk7CgkKCWlmKCBua2V0YSA8PSAxICkKCQlua2V0YSA9IDI7CglpZiggbWluIDwgMCB8fCBtYXggPCAwICkKCQlua2V0YSsrOwoJCglmbXQgPSAoY2hhciopbWFsbG9jKCBua2V0YSArIDQgKTsKCWhlYWQxID0gKGNoYXIqKW1hbGxvYyggbmtldGEgKyAyICk7CgloZWFkMiA9IChjaGFyKiltYWxsb2MoIG5rZXRhICsgMiApOwoJCglzbnByaW50ZiggZm10LCBua2V0YSArIDQsICIlJSVkZHwiLCBua2V0YSApOwoJc3RycGFkKCBoZWFkMSwgbmtldGEgKyAyLCAnICcsICd8JyApIDsKCXN0cnBhZCggaGVhZDIsIG5rZXRhICsgMiwgJy0nLCAnKycgKSA7CgkKCS8vaWYoIGFyZ2MgPT0gNCApewoJLy8Jc3RyZWFtID0gZm9wZW4oIGFyZ3ZbM10sICJ3IiApOwoJLy8JaWYoISBzdHJlYW0gKXsKCS8vCQlwZXJyb3IoIGFyZ3ZbM10gKTsKCS8vCQlleGl0KEVYSVRfRkFJTFVSRSk7CgkvLwl9CgkvL30gZWxzZQoJCXN0cmVhbSA9IHN0ZG91dDsKCQoJcHJpbnRsaW5lKCBzdHJlYW0sIGhlYWQxLCBtaW4sIG1heCwgMSwgZm10LCAnXG4nICk7CglwcmludGxpbmUoIHN0cmVhbSwgaGVhZDIsIG1pbiwgbWF4LCAxLCBoZWFkMiwgJ1xuJyApOwoJZm9yKCBpPW1pbjsgaTw9bWF4OyArK2kgKQoJewoJCXByaW50bGluZSggc3RyZWFtLCBmbXQsIG1pbiwgbWF4LCBpLCBmbXQsICdcbicgKTsKCQlwcmludGxpbmUoIHN0cmVhbSwgaGVhZDIsIG1pbiwgbWF4LCAxLCBoZWFkMiwgJ1xuJyApOwoJfQoJaWYoIHN0cmVhbSApCgkJZmNsb3NlKCBzdHJlYW0gKTsKCWZyZWUoZm10KTsKCWZyZWUoaGVhZDEpOwoJZnJlZShoZWFkMik7CglyZXR1cm4gMDsKfQ==