下のプログラムのように作成したのですが、記号を使用するとなぜかセルの数が増えません。
プログラムをどのように変更したらきちんと動作するようになるでしょうか。
また、条件は以下のようになっています。
(ア)誕生
死んでいるセルに隣接する生きたセルがちょうど3つあれば、次の世代が誕生する。
(イ)生存
生きているセルに隣接する生きたセルが2つか3つならば、次の世代でも生存する。
(ウ)過疎
生きているセルに隣接する生きたセルが1つ以下ならば、過疎により死滅する。
(エ)過密
生きているセルに隣接する生きたセルが4つ以上ならば、過密により死滅する。
ご教授いただけると幸いです。
よろしくお願い致します。
#include<stdio.h>
#include<string.h>
#define number 3
int main(void) {
char cell[number][number] = {
{'o','o',' '},
{'o',' ',' '},
{' ',' ',' '}
};
char temp[number][number];
int count;
int i, j;
for (i = 0; i < number; i++) {
for (j = 0; j < number; j++) {
printf("%c", cell[i][j]);
}
printf("\n");
}
printf("\n");
for (int k = 0; k < number; k++) {
for (int l = 0; l < number; l++) {
count = 0;
if (k != 0)
{ count += cell[k - 1][l]; }
if (k != 0 && l != number - 1)
{ count += cell[k - 1][l + 1]; }
if (l != number - 1)
{ count += cell[k][l + 1]; }
if (k != number - 1 && l != number - 1)
{ count += cell[k + 1][l + 1]; }
if (l != number - 1)
{ count += cell[k + 1][l]; }
if (k != number - 1 && l != 0)
{ count += cell[k + 1][l - 1]; }
if (l != 0)
{ count += cell[k][l - 1]; }
if (k != 0 && l != 0)
{ count += cell[k - 1][l - 1]; }
if ((cell[k][l] && (count == 2 || count == 3)) || (!cell[k][l] && count == 3)) {
temp[k][l] = 'o';
}
else {
temp[k][l] = ' ';
}
printf("%c", temp[k][l]);
}
printf("\n");
}
return 0;
}
[\code]