#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
void print_board( int const height,
int const width,
char const char_1,
char const char_2)
{
const char arr[ ] = { char_1, char_2} ;
int index = 0 ;
size_t length = 0 ;
if ( height < 10 )
length = 1 ;
else if ( height < 100 )
length = 2 ;
else
length = 3 ;
for ( int i = 1 ; i <= height; ++ i)
{
cout << setw( length) << i << ' ' ;
for ( int j = 0 ; j < width; ++ j) {
cout << arr[ index] ;
index = ( index + 1 ) % 2 ;
}
cout << endl;
}
cout << setw( length+ 1 ) << ' ' ;
for ( int j = 0 ; j < width; ++ j) {
cout << char ( 'A' + j) ;
}
cout << endl;
}
int main( )
{
int width { } ;
int height { } ;
char char_1 { } ;
char char_2 { } ;
for ( int i = 0 ; i < 2 ; ++ i) {
cout << "Enter height and width: " ;
cin >> height >> width;
cout << endl << "Enter characters: " ;
cin >> char_1 >> char_2;
cout << endl;
print_board( height, width, char_1, char_2) ;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHByaW50X2JvYXJkKGludCBjb25zdCBoZWlnaHQsCgkJCQlpbnQgY29uc3Qgd2lkdGgsCiAgICAgICAgICAgICAgICBjaGFyIGNvbnN0IGNoYXJfMSwKICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgY2hhcl8yKQp7Cgljb25zdCBjaGFyIGFycltdID0ge2NoYXJfMSwgY2hhcl8yfTsKCWludCBpbmRleCA9IDA7CgoJc2l6ZV90IGxlbmd0aCA9IDA7CglpZiAoaGVpZ2h0IDwgMTApCgkJbGVuZ3RoID0gMTsKCWVsc2UgaWYgKGhlaWdodCA8IDEwMCkKCQlsZW5ndGggPSAyOwoJZWxzZQoJCWxlbmd0aCA9IDM7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gaGVpZ2h0OyArK2kpCiAgICB7CiAgICAgICAgY291dCA8PCBzZXR3KGxlbmd0aCkgPDwgaSA8PCAnICc7CiAgICAJZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgKytqKXsKCQkJY291dCA8PCBhcnJbaW5kZXhdOwoJCQlpbmRleCA9IChpbmRleCArIDEpICUgMjsKICAgIAl9CiAgICAJY291dCA8PCBlbmRsOwogICAgfSAgIAoKCWNvdXQgPDwgc2V0dyhsZW5ndGgrMSkgPDwgJyAnOwoJZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgKytqKXsKCQljb3V0IDw8IGNoYXIoJ0EnK2opOwoJfQoJY291dCA8PCBlbmRsOwp9CiAgICAgICAgICAgICAKaW50IG1haW4oKQp7CiAgICBpbnQgd2lkdGgge307CiAgICBpbnQgaGVpZ2h0IHt9OwogICAgY2hhciBjaGFyXzEge307CiAgICBjaGFyIGNoYXJfMiB7fTsKCglmb3IoaW50IGkgPSAwOyBpIDwgMjsgKytpKXsKCSAgICBjb3V0IDw8ICJFbnRlciBoZWlnaHQgYW5kIHdpZHRoOiAiOwogICAgCWNpbiA+PiBoZWlnaHQgPj4gd2lkdGg7CgkgICAgY291dCA8PCBlbmRsIDw8ICJFbnRlciBjaGFyYWN0ZXJzOiAiOwogICAgCWNpbiA+PiBjaGFyXzEgPj4gY2hhcl8yOwoJICAgIGNvdXQgPDwgZW5kbDsKCiAgICAJcHJpbnRfYm9hcmQoaGVpZ2h0LCB3aWR0aCwgY2hhcl8xLCBjaGFyXzIpOwoJfQoKICAgIHJldHVybiAwOwp9