Как хранить случайные алфавиты в 2d массиве в парах? - PullRequest
0 голосов
/ 14 апреля 2019

Я делаю игру в c , для которой требуется 2D массив размера m * n , который должен хранить алфавиты в парах. Это игра памяти, в которой пользователю необходимо выбрать 2 слота из матрицы , которая скрыта. Если они совпадают, они удаляются из матрицы .

например: для массива a [3] [4] он должен хранить

a t x e
b a t n 
x b n e

1 Ответ

1 голос
/ 14 апреля 2019

Хотя я делюсь кодом, попробуйте ввести код самостоятельно.Я даю несколько шагов с этим ответом, который должен помочь вам продумать код, если вы хотите реализовать все это самостоятельно.

Вот несколько шагов.

1) Ввод m и n

int m, n;
scanf("%d%d", &m, &n);

2) Выделение памяти для массива

char *arr[m];
for (i = 0; i < n; ++i) {
    arr[i] = malloc(n * sizeof(char));
}

3) Теперь, так как вы упомянули в одномиз ваших комментариев, программа должна генерировать случайных алфавитов, а не чисел , позвольте мне сказать вам, C позволяет приводить тип данных от int до char.Вот как вы будете генерировать случайные символы.

for (i = 0; i < m; ++i) {
    for (j = 0; j < n; ++j) {
        c = (char) (rand() % 26) + 'a'; // Generate a random character between 'a' and 'z'
        arr[i][j] = c;
    }
}

Вот полный код:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int m, n, i, j;
    char c;
    scanf("%d%d", &m, &n);

    char *arr[m];
    for (i = 0; i < n; ++i) {
        arr[i] = malloc(n * sizeof(char));
    }

    for (i = 0; i < m; ++i) {
        for (j = 0; j < n; ++j) {
            c = (char) (rand() % 26) + 'a'; // Generate a random character between 'a' and 'z'
            arr[i][j] = c;
            printf("%c ", c);
        }
        printf("\n");
    }
}

Ввод:

3
4

Вывод:

n w l r 
b b m q 
b h c d 

Я думаю, что это ожидаемый вывод!

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...