fork download
  1. #include <stdio.h>
  2. #define sizeY 10
  3. #define sizeX 10
  4. #define LIVE 1
  5. #define DEAD 0
  6.  
  7. typedef struct {
  8. int y;
  9. int x;
  10. unsigned char status;
  11. } TableType;
  12.  
  13.  
  14. void printTable(TableType grid[], int table_size) {
  15. int i;
  16. for (i = 0; i < table_size; i++) {
  17. //printf ("P(%d,%d) = ", grid[i].x, grid[i].y);
  18.  
  19. if (i % sizeY == 0 && i != 0) {
  20. printf("\n");
  21. }
  22.  
  23. if (grid[i].status == LIVE) {
  24. printf("X");
  25. } else {
  26. printf("-");
  27. }
  28. }
  29. printf("\n");
  30. }
  31.  
  32. void clearTable(TableType grid[], int table_size) {
  33. int i = 0;
  34. int height, width;
  35. for (height = 0; height < sizeY; height++) {
  36. for (width = 0; width < sizeX; width++) {
  37. grid[i].y = height;
  38. grid[i].x = width;
  39. grid[i].status = DEAD;
  40. //printf ("Setting P(%d,%d) to DEAD\n", width, height);
  41. i++;
  42. }
  43. }
  44. }
  45.  
  46. int findIndexForPoint(TableType grid[], int table_size, int x, int y) {
  47. int i;
  48. for (i = 0; i < table_size; i++) {
  49. if (grid[i].x == x && grid[i].y == y) {
  50. // found it
  51. return i;
  52. }
  53. }
  54.  
  55. // not found, return -1;
  56. return -1;
  57. }
  58.  
  59.  
  60. int main () {
  61. TableType grid[sizeX*sizeY] = {0};
  62. clearTable(grid, sizeX*sizeY);
  63.  
  64. // access via index but you are not sure which x,y
  65. grid[10].status = LIVE;
  66.  
  67. // This way you know exactly which x,y
  68. int index = findIndexForPoint (grid,sizeX*sizeY,5,3);
  69. if (index != -1) {
  70. grid[index].status = LIVE;
  71. }
  72.  
  73. printTable(grid, sizeX*sizeY);
  74. }
Success #stdin #stdout 0s 10304KB
stdin
Standard input is empty
stdout
----------
X---------
----------
-----X----
----------
----------
----------
----------
----------
----------