101

(4 відповідей, залишених у C++)

Задача: реалізувати гру хрестики-нулики. Малюю поле таким чином:

void paintGameField()
{
    cout << "\tNoughts and Crosses game\n\n";
    string field = "\n   |   |\
                   \n %c | %c | %c\
                    \n___|___|___\
                 \n    |    |\
                   \n %c | %c | %c\
                    \n___|___|___\
                  \n   |     |\
                   \n %c | %c | %c\
                    \n     |      |\n";

    printf(field.c_str(), game_field[0][0], game_field[0][1], game_field[0][2],
    game_field[1][0], game_field[1][1], game_field[1][2],
    game_field[2][0], game_field[2][1], game_field[2][2]);
}

Відповідно, при старті маю (масив ініціалізую пробілами):
http://i.imgur.com/kjOeXBe.png?1

Тоді легко можна ставити хрестик чи нулик в масив. Але, власне, питання:
чи можна спростити передачу масиву як параметр у функцію printf? (схоже до python стилю)
Або, якщо це ніяк не можливо, то як зробити краще?

102

(2 відповідей, залишених у C++)

1. Як правильно передавати двовимірні масиви як аргументи?
2. Чи можна зробити, щоб функція вертала масив, не використовуючи вказівники?

Ось, наприклад, що мене найбільше бентежить. Чи можна покращити цей шматок коду?

const int ARRAY_SIZE = 4;

void sumArrays(const int mas_a[ARRAY_SIZE][ARRAY_SIZE], const int mas_b[ARRAY_SIZE][ARRAY_SIZE], int mas_c[ARRAY_SIZE][ARRAY_SIZE])
{
    for (int i = 0; i < ARRAY_SIZE; i++)
        for (int j = 0; j < ARRAY_SIZE; j++)
            mas_c[i][j] = mas_a[i][j] + mas_b[i][j];
}