online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Online C Compiler. Code, Compile, Run and Debug C program online. Write your code in this editor and press "Run" button to compile and execute it. *******************************************************************************/ #include <stdio.h> #include <string.h> #define size_x 10 #define size_y 10 typedef void * ptr_t; typedef ptr_t (*field_t)[size_x][size_y]; typedef ptr_t (*state_f)(ptr_t state, field_t field, int x, int y); #define min(A,B) ((A) < (B)?(A):(B)) #define max(A,B) ((A) > (B)?(A):(B)) ptr_t state_dead(ptr_t current_state, field_t field, int x, int y); ptr_t state_alive(ptr_t current_state, field_t field, int x, int y) { int x_min = max(x-1, 0); int x_max = min(x+1, size_x-1); int y_min = max(y-1, 0); int y_max = min(y+1, size_y-1); int alive_count = 0; for (int i = x_min; i <= x_max; i++) { for (int j = y_min; j <= y_max; j++) { if ((*field)[i][j] == (void*)(state_alive)) alive_count++; } } alive_count -= 1; if ((alive_count == 2) || (alive_count == 3)) return (ptr_t)(state_alive); else return (ptr_t)(state_dead); } ptr_t state_dead(ptr_t current_state, field_t field, int x, int y) { int x_min = max(x-1, 0); int x_max = min(x+1, size_x-1); int y_min = max(y-1, 0); int y_max = min(y+1, size_y-1); int alive_count = 0; for (int i = x_min; i <= x_max; i++) { for (int j = y_min; j <= y_max; j++) { if ((*field)[i][j] == (void*)(state_alive)) alive_count++; } } if (alive_count == 3) return (ptr_t)(state_alive); else return (ptr_t)(state_dead); } void print_field(field_t field) { for (int i = 0; i < size_x; i++) { for (int j = 0; j < size_y; j++) { if ((*field)[i][j] == (ptr_t)(state_alive)) printf("1 "); else printf("0 "); } printf("\n"); } } int main() { ptr_t field1[size_x][size_y]; ptr_t field2[size_x][size_y]; int i, j; for (i = 0; i < size_x; i++) { for (j = 0; j < size_y; j++) { field1[i][j] = (ptr_t)(state_dead); field2[i][j] = (ptr_t)(state_dead); } } field1[0][2] = (ptr_t)(state_alive); field1[1][2] = (ptr_t)(state_alive); field1[2][2] = (ptr_t)(state_alive); field1[2][1] = (ptr_t)(state_alive); field1[1][0] = (ptr_t)(state_alive); printf("Initial distribution:\n"); print_field(&field1); for (int n=0; n<30; n++) { for (int i = 0; i < size_x; i++) { for (int j = 0; j < size_y; j++) { state_f f = ((state_f)(field1[i][j])); field2[i][j] = (ptr_t)( f(&field1[i][j], &field1, i, j) ); } } printf("Distribution after step %d:\n", n); print_field(&field2); printf("\n"); memcpy(&field1, &field2, sizeof(field2)); } return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue