static int nrow, ncol, ntot; static int nrow_t, ncol_t, ntot_t; static int alive_in_grid=0; static char** g0=NULL; static char** g1=NULL; #define Current(I, J) g_current[(I) + 1][(J) + 1] #define Next(I, J) g_next[(I) + 1][(J) + 1] void lifePopulateRandom(float percent) { int i, j, location, num_to_insert; if (percent < 0.0 || percent > 100.0) { printf("Invalid percentage: %f.\n", percent); return; } percent /= 100.0; // Initialize both grids to all blank spaces. for (i = 0; i < ntot_t; i++) { g0[i] = ' '; g1[i] = ' '; } alive_in_grid = 0; num_to_insert = (int) (percent * ntot); while (alive_in_grid < num_to_insert) { location = rand() % ntot; j = location % ncol; i = location / ncol; if (Current(i, j) == ' ') { Current(i, j) = '*'; printf ("\nbye\n"); alive_in_grid++; } } return; } // lifePopulateRandom()

this is how the grid was initialized:

void lifeInit(int the_nrow, int the_ncol) { int i; nrow = the_nrow; ncol = the_ncol; ntot = nrow * ncol; nrow_t = nrow + 2; ncol_t = ncol + 2; ntot_t = nrow_t * ncol_t; // Free memory if previously initialized. if (g0 != NULL) free(g0); if (g1 != NULL) free(g1); g0 = (char**)malloc(ntot_t * sizeof(char*)); g1 = (char**)malloc(ntot_t * sizeof(char*)); if (g0 == NULL || g1 == NULL) { printf("Initialization memory allocation failed. Terminating...\n"); exit(-1); } // Initialize both grids to all blank spaces. for (i = 0; i < ntot_t; i++) { g0[i] = ' '; g1[i] = ' '; } g_current = g0; g_next = g1; return; } // lifeInit()

thanks.