Игра "жизнь" - найти и исправить ошибки в коде - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <WinCon.h>
#include <conio.h>
#include <time.h>
 
#define SIZE 20
 
int a[SIZE][SIZE],b[SIZE][SIZE];
 
int chk(int x, int y)
{
    int i=0;
    if (a[(x+SIZE-1)%SIZE][y]==1) i++;
    if (a[(x+SIZE-1)%SIZE][(y+SIZE-1)%SIZE]==1) i++;
    if (a[(x+SIZE-1)%SIZE][(y+1)%SIZE]==1) i++;
    if (a[x][(y+SIZE-1)%SIZE]==1) i++;
    if (a[x][(y+1)%SIZE]==1) i++;
    if (a[(x+1)%SIZE][(y+SIZE-1)%SIZE]==1) i++;
    if (a[(x+1)%SIZE][y]==1) i++;
    if (a[(x+1)%SIZE][(y+1)%SIZE]==1) i++;
    return i;
}

void gotoxy(short x,short y)
{
    COORD Coor;
    Coor.X=x; Coor.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE) ,Coor);
}
 
int main()
{
    int i,j,t,seed;
    printf("Enter seed (0 for random seed):");
    scanf("%d",&seed);
    if (seed==0) srand(time(NULL));
        else srand(seed);
    system("cls");
 
    for(i=0;i<SIZE;i++)
        for(j=0;j<SIZE;j++)
        {
            a[i][j]=rand()%2;
            gotoxy(i,j);
            if(a[i][j]==1) printf("#");
            else printf(" ");
        }
    while (!kbhit())
    {
        Sleep(150);
        for(i=0;i<SIZE;i++)
            for(j=0;j<SIZE;j++)
            {
                if (t=chk(i,j)==3) b[i][j]=1;
                else if (t==2) b[i][j]=a[i][j];
                else  b[i][j]=0;
            }
 
        for (i=0; i<SIZE;i++)
            for(j=0; j<SIZE; j++)
            {
                gotoxy(i,j);
                printf("%c",b[i][j]==1?'#':' ');
                a[i][j]=b[i][j];
            }
    }
    return 0;
}
игра жизнь,подскажите в чем ошибка

Решение задачи: «Игра "жизнь" - найти и исправить ошибки в коде»

textual
Листинг программы
if (t=chk(i,j)==3) b[i][j]=1;
else if (t==2) b[i][j]=a[i][j];
else *b[i][j]=0;

Объяснение кода листинга программы

  1. t=chk(i,j)==3 - здесь происходит проверка условия chk(i,j)==3, и если оно истинно, то переменной t присваивается значение 3.
  2. b[i][j]=1 - если условие в первом шаге истинно, то в массив b записывается единица.
  3. else if (t==2) - если условие в первом шаге не выполнено, и значение переменной t равно 2, то происходит переход к этому блоку кода.
  4. b[i][j]=a[i][j] - если значение переменной t равно 2, то в массив b записываются значения из массива a.
  5. else *b[i][j]=0 - если условие в первом шаге не выполнено, и значение переменной t не равно 2, то в массив b записывается ноль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы