#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;
char* head1;
char* head2;
char tmp[8];
int min;
int max;
int 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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8ZXJybm8uaD4KCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90OwoKc3RhdGljIHZvaWQgcHJpbnRsaW5lKCBGSUxFKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGhlYWQsIGludCBtaW4sIGludCBtYXgsIGludCBtdWwsIGNvbnN0IGNoYXIqIGZtdCwgY2hhciBlbmQpCnsKCWludCBpOwoJZnByaW50Ziggc3RyZWFtLCBoZWFkLCBtdWwgKTsKCWZvciggaT1taW47IGk8PW1heDsgKytpICkKCQlmcHJpbnRmKCBzdHJlYW0sIGZtdCwgaSAqIG11bCApOwoJZnByaW50Ziggc3RyZWFtLCAiJWMiLCBlbmQgKTsKfQoKc3RhdGljIHZvaWQgc3RycGFkKCBjaGFyKiBzLCBpbnQgc2l6ZSwgY2hhciBwYWQsIGNoYXIgZW5kICkKewoJaWYoIHNpemUgPCAyICl7CgkJKnMgPSAnXDAnIDsKCQlyZXR1cm4gOwoJfQoJbWVtc2V0KCBzLCBwYWQsIHNpemUgLSAyICk7CglzWyBzaXplIC0gMiBdID0gZW5kIDsKCXNbIHNpemUgLSAxIF0gPSAnXDAnOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQp7Cgl1Y2hhcl90IG5rZXRhOwoJY2hhciogZm10OwoJY2hhciogaGVhZDE7CgljaGFyKiBoZWFkMjsKCWNoYXIgdG1wWzhdOwoJaW50IG1pbjsKCWludCBtYXg7CglpbnQgaTsKCUZJTEUqIHN0cmVhbTsKCQoJLy9pZiggYXJnYyA8IDMgKXsKCS8vCWZwcmludGYoIHN0ZGVyciwgIlVzYWdlICVzIDxtaW4+IDxtYXg+XG4iLCBhcmd2WzBdICk7CgkvLwlyZXR1cm4gMTsKCS8vfQoJLy9taW4gPSBhdG9pKGFyZ3ZbMV0pOwoJLy9tYXggPSBhdG9pKGFyZ3ZbMl0pOwoJZnNjYW5mKCBzdGRpbiwgIiVkICVkIiwgJm1pbiwgJm1heCApOwoJc25wcmludGYoIHRtcCwgc2l6ZW9mIHRtcCwgIiVkIiwgbWF4Km1heCApOwoJbmtldGEgPSBzdHJsZW4oIHRtcCApOwoJCglpZiggbmtldGEgPD0gMSApCgkJbmtldGEgPSAyOwoJaWYoIG1pbiA8IDAgfHwgbWF4IDwgMCApCgkJbmtldGErKzsKCQoJZm10ID0gKGNoYXIqICltYWxsb2MoIG5rZXRhICsgNCApOwoJaGVhZDEgPSAoY2hhciogKW1hbGxvYyggbmtldGEgKyAyICk7CgloZWFkMiA9IChjaGFyKiApbWFsbG9jKCBua2V0YSArIDIgKTsKCQoJc25wcmludGYoIGZtdCwgbmtldGEgKyA0LCAiJSUlZGR8IiwgbmtldGEgKTsKCXN0cnBhZCggaGVhZDEsIG5rZXRhICsgMiwgJyAnLCAnfCcgKSA7CglzdHJwYWQoIGhlYWQyLCBua2V0YSArIDIsICctJywgJysnICkgOwoJCgkvL2lmKCBhcmdjID09IDQgKXsKCS8vCXN0cmVhbSA9IGZvcGVuKCBhcmd2WzNdLCAidyIgKTsKCS8vCWlmKCEgc3RyZWFtICl7CgkvLwkJcGVycm9yKCBhcmd2WzNdICk7CgkvLwkJZXhpdChFWElUX0ZBSUxVUkUpOwoJLy8JfQoJLy99IGVsc2UKCQlzdHJlYW0gPSBzdGRvdXQ7CgkKCXByaW50bGluZSggc3RyZWFtLCBoZWFkMSwgbWluLCBtYXgsIDEsIGZtdCwgJ1xuJyApOwoJcHJpbnRsaW5lKCBzdHJlYW0sIGhlYWQyLCBtaW4sIG1heCwgMSwgaGVhZDIsICdcbicgKTsKCWZvciggaT1taW47IGk8PW1heDsgKytpICkKCXsKCQlwcmludGxpbmUoIHN0cmVhbSwgZm10LCBtaW4sIG1heCwgaSwgZm10LCAnXG4nICk7CgkJcHJpbnRsaW5lKCBzdHJlYW0sIGhlYWQyLCBtaW4sIG1heCwgMSwgaGVhZDIsICdcbicgKTsKCX0KCWlmKCBzdHJlYW0gKQoJCWZjbG9zZSggc3RyZWFtICk7CglmcmVlKCBmbXQgKTsKCWZyZWUoIGhlYWQxICk7CglmcmVlKCBoZWFkMiApOwoJcmV0dXJuIDA7Cn0=