fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define FieldSize 20
  5. #define TimeMax 20
  6.  
  7. /*フィールドの初期化 (ファイルの読み込み)*/
  8. void init_field(int field[FieldSize][FieldSize], char *fname){
  9. int i,j;
  10. FILE *fp;
  11.  
  12. if((fp=fopen(fname,"r"))==NULL){
  13. printf("init_field(): Cannot open \"%s\"\n",fname);
  14. exit(1);
  15. }
  16.  
  17. for(i=0;i<FieldSize;i++){
  18. for(j=0;j<FieldSize;j++){
  19. fscanf(fp,"%d ",&field[i][j]);
  20. }
  21. }
  22. fclose(fp);
  23. }
  24.  
  25. int count(int I, int J, int field[FieldSize][FieldSize]){
  26. int i,j;
  27. int i_tmp,j_tmp;
  28. int sum;
  29.  
  30. sum=0;
  31. for(i=-1;i<=1;i++){
  32. for(j=-1;j<=1;j++){
  33.  
  34. }
  35. }
  36. return sum;
  37. }
  38.  
  39. void update_field(int field[FieldSize][FieldSize]){
  40. int i,j;
  41. int around;
  42. int new_field[FieldSize][FieldSize];
  43.  
  44. for(i=0;i<FieldSize;i++){
  45. for(j=0;j<FieldSize;j++){
  46. around=count(i,j,field);
  47.  
  48. if( (new_field[i][j] >= 3) && !(field[i][j]) ) {
  49. field[i][j]=1;
  50. }
  51. /* ˆÛŽ */
  52. else if ( ((new_field[i][j] == 2) || (new_field[i][j] == 3)) && (field[i][j]) ) {
  53. field[i][j]=1;
  54. }
  55. /* Ž€–S(‚»‚êˆÈŠO) */
  56. else {
  57. field[i][j]=0;
  58. }
  59. new_field[i][j]=0;
  60. }
  61.  
  62. }
  63. for(i = 0;i < 20;i++){
  64. for(j = 0;j < 20;j++){
  65. field[i][j] = new_field[i][j];
  66. }
  67. }
  68.  
  69. for(i=0;i<20;i++){
  70. for(j=0;j<20;j++){
  71. field[i][j] = new_field[i][j];
  72. if(field[i][j]==1){
  73. printf("■");
  74. }else{
  75. printf("□");
  76. }
  77. }
  78. printf("\n");
  79. }
  80. }
  81.  
  82.  
  83. void display(int field[FieldSize][FieldSize]){
  84. int i,j;
  85.  
  86.  
  87. for(i=0;i<20;i++){
  88. for(j=0;j<20;j++){
  89. if(field[i][j]==1){
  90. printf("■");
  91. }else{
  92. printf("□");
  93. }
  94. }
  95. printf("\n");
  96. }
  97.  
  98. }
  99.  
  100. int main(int argc, char *argv[]){
  101. int t;
  102. int field[FieldSize][FieldSize];
  103.  
  104. if(argc!=2){
  105. printf("実行方法 : ./a.out 初期状態のファイル\n");
  106. }
  107.  
  108. //system("clear");
  109. init_field(field, argv[1]);
  110. //display(field);
  111. //sleep(1);
  112. //system("clear");
  113. for(t=0;t<TimeMax;t++){
  114. update_field(field);
  115. display(field);
  116. //sleep(1);
  117. //system("clear");
  118. }
  119.  
  120. return 0;
  121. }
  122.  
  123.  
  124. /////////////////////////////////frog.dat
  125. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  126. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  127. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  128. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  129. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  130. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  131. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  132. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  133. 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
  134. 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
  135. 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
  136. 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
  137. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  138. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  139. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  140. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  141. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  142. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  143. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  144. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  145.  
  146.  
  147.  
  148.  
  149.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘void init_field(int (*)[20], char*)’:
prog.cpp:19: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result
prog.cpp: In function ‘int count(int, int, int (*)[20])’:
prog.cpp:27: warning: unused variable ‘i_tmp’
prog.cpp:27: warning: unused variable ‘j_tmp’
prog.cpp: At global scope:
prog.cpp:125: error: expected unqualified-id before numeric constant
stdout
Standard output is empty