заполнение массива символами пробела и ‘x’ таким образом, чтобы при выводе
массива на экране получить следующий рисунок. Желательно делать программу таким
образом, чтобы при изменении размера массива рисунок изменился пропорционально.


#include
using namespace std;
struct Concept {
char a;
char b;
size_t n;
size_t m;
size_t k;
size_t l;
Concept() = default;
Concept(const char a, const char b, const size_t n, const size_t m, const size_t k, const size_t l)
: a(a), b(b), n(n), m(m), k(k), l(l) {}
};
void fill_concept(char* line, const size_t len, const Concept& cpt) {
size_t i = 0;
while (i < len) {
size_t j = 0;
while (i < len && j < cpt.n) {
line[i] = cpt.a;
++j;
++i;
}
j = 0;
while (i < len && j < cpt.m) {
line[i] = cpt.b;
++j;
++i;
}
j = 0;
while (i < len && j < cpt.k) {
line[i] = cpt.a;
++j;
++i;
}
j = 0;
while (i < len && j < cpt.l) {
line[i] = cpt.b;
++j;
++i;
}
}
}
void outline(char* line, const size_t len, const size_t pos) {
static const size_t lim = 2;
Concept cpt;
switch (pos % lim) {
case 0: cpt = { 'x', ' ', 1, 2, 1, 2 }; break;
default: cpt = { ' ', 'x', 1, 1, 1, 2 }; break;
}
fill_concept(line, len, cpt);
}
int main() {
const size_t n = 10;
char matrix[n][n]{};
for (size_t i = 0; i < n; ++i) outline(matrix[i], n, i);
for (const auto& row : matrix) {
for (auto x : row) cout.put(x);
puts("");
}
}