2014-10-15 2 views
-1

Я пытаюсь написать функцию, которая создает матрицу с единицами и нулями, которые распределены случайным образом, но я получаю сообщение об ошибке: ожидаемый идентификатор перед числовой константой. Может кто-то может дать мне несколько указателей на то, что я делаю неправильно.Как создать матрицу со случайными числами с помощью typedef struct?

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

#define ROWS 7 
#define COLUMNS 7 

typedef struct { 
const int rows; 
const int columns; 
int board[ROWS][COLUMNS]; 
} game; 

void newGame(game *session); 

int main(void){ 

game session = {ROWS, COLUMNS}; 

srand(time(NULL)); 

return 0; 
} 

/* Function: newGame 
* Description: Set up a new game with random states for each brick. 
* Input:  A pointer to the game structure. 
* Output:  The game structure pointed to is updated. 
*/ 
void newGame(game *session){ 

for(int r = 0; r<ROWS; r++){ 
    for(int c = 0; c<COLUMNS; c++){ 
     session[r].ROWS = rand()%2; 
     session[c].COLUMNS = rand()%2; 
    } 
    } 
} 
+0

Просьба указать, какая строка содержит ошибку. – unwind

ответ

2

Это:

session[r].ROWS = rand()%2; 

не имеет никакого смысла, session является указателем на один game, а не массив, а ROWS является #define, который будет заменен на целое число здесь.

вероятно Вы имели в виду:

session->board[r][c] = rand() % 2; 

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

+0

Я не уверен в этом, и это неверно в C++. –

+0

@BasileStarynkevitch Правда, я не думал об этом утверждении (я не забочусь о C++ в вопросе C, но это было неверно для C тоже). Я удалил его, спасибо. – unwind

Смежные вопросы