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

#include
#include
void fill(std::vector& arr) //наполнитель массива мозаикой
{
const static std::vector atom //шаблон мозаики
{
" ",
" x ",
" xxx ",
" x ",
" ",
" "
};
for (size_t i = 0; i < arr.size(); i++)
for (size_t j = 0; j < arr[i].size(); j++) arr[i][j] = atom[i % 6][j % 6];
}
int main()
{
size_t n, m;
std::cout > n >> m;
std::vector arr(n, std::string(m, ' ')); //массив строк, строка - массив чаров
fill(arr);
for (auto& i : arr) std::cout
#include
using namespace std;
struct Concept {
char a;
char b;
size_t n;
size_t m;
size_t k;
Concept() = default;
Concept(const char a, const char b, const size_t n, const size_t m, const size_t k)
: a(a), b(b), n(n), m(m), k(k) {}
};
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.b;
++j;
++i;
}
j = 0;
while (i < len && j < cpt.m) {
line[i] = cpt.a;
++j;
++i;
}
j = 0;
while (i < len && j < cpt.k) {
line[i] = cpt.b;
++j;
++i;
}
}
}
void outline(char* line, const size_t len, const size_t pos) {
static const size_t lim = 6;
Concept cpt;
switch (pos % lim) {
case 1: case 3: cpt = { '#', ' ', 2, 1, 3 }; break;
case 2: cpt = { '#', ' ', 1, 3, 2 }; break;
default: cpt = { ' ', ' ', 1, 1, 1 }; 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("");
}
}