Форум программистов, компьютерный форум CyberForum.ru

Программа Жизнь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск последовательности в массиве символов http://www.cyberforum.ru/cpp-beginners/thread852333.html
есть массив ascii символов мне нужно там найти последовательность (строку) есть какие-нибудь функции для поиска последовательности. в ручную я уже реализовал.
C++ Интеграция скомпилированного Fortran - приложения в программу на C++ Как можно использовать в программе написанной на с++ откомпилированное fortran приложение? Т.е. поступают входные данные в программу написанную на с++, она их передает в откомпилированную программу написанную на фортране, а та в свою очередь делает вычисления, и возвращает выходные данные в программу на с++, и далее программа на с++ продолжает вычисления... Буду рад всему, литература, ссылки... http://www.cyberforum.ru/cpp-beginners/thread852320.html
Слияние массивов C++
Получить массив С(k), упорядоченный по возрастанию, путем слияния массивов A(n) и B(m), упорядоченных перед этим по возрастанию, где k = n + m
C++ Какой лучше комрилятор?
Прошу извинения сразу. Тема заезженная .Какой компилятор лучше ? И какую версию компилятора выбирать анг. или русск.?
C++ Как представить массив состоящий из дробей ? http://www.cyberforum.ru/cpp-beginners/thread852276.html
и потом нужно максимальную дробь найти в этом массиве
C++ Проверить код Пытаюсь переделать программу из С# в C++. { protected int x; protected int y; public virtual void Show () / / віртуальний метод { Console.WriteLine ("точка на площині: ({0}, {1})", x, y); } public DemoPoint (int x, int y) { подробнее

Показать сообщение отдельно
[O]Clic[K]
1 / 1 / 0
Регистрация: 28.03.2012
Сообщений: 55
29.04.2013, 21:32     Программа Жизнь
Вообщем... Что-то не могу сообразить с программой...
Реализовать алгоритм игры «жизнь». Дано двумерное поле клеток, каждая из которых либо содержит организм (1), либо пуста (0). Каждая клетка проверяет состояние своих соседей (их 8) и изменяет своё по правилам:
Живая клетка, вокруг которой < 2 живых клеток, умирает от одиночества.
Живая клетка, вокруг которой есть 2 или 3 живых клеток, выживает.
Живая клетка, вокруг которой > 3 живых клеток, умирает от перенаселения.
Пустая клетка, рядом с которой равно 3 живых соседа, оживает.
Особенно не могу понять как сделать искомую матрицу квази бесконечной.
Мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    const int Width(30);
    const char live('#'), dead('.');
    const int gen=5;
 
    bool mas[Width*Width]={false};
    bool mas2[Width*Width]={false};
 
    srand((unsigned)time(NULL));
 
    for (int i=0; i<Width; i++)
    {
        for (int k=0; k<Width; k++)
        {
            if (mas[i+k*Width])
            {
                cout<<live;
            }
            else
            {
                cout<<dead;
            }
        }
        cout<<'\n';
    }
 
    cout<<'\n';
 
    for (int i=0; i<Width; i++)
    {
        for (int k=0; k<Width; k++)
        {
            mas[i+k*Width]=rand()%2;
 
            if (mas[i+k*Width])
            {
                cout<<live;
            }
            else
            {
                cout<<dead;
            }
        }
        cout<<'\n';
    }
    
    for (int g=0; g<gen; g++)
    {
        for (int i=0; i<Width; i++)
        {
        for (int k=0, count=0; k<Width; k++)
            {
                if ( ((i-1)>=0) && ((k-1)>=0) )
                {
                    if (mas[(i-1)+(k-1)*Width]) count++;
                }
                if ((i-1)>=0)
                {
                    if (mas[(i-1)+(k-1)*Width]) count++;
                }
                if ( ((k+1)<=Width) && ((i-1)>=0) )
                {
                    if (mas[(i+1)+(k-1)*Width]) count++;
                }
                if ( (i-1)>=0)
                {
                    if (mas[(i-1)+k*Width]) count++;
                }
                if ( (i+1)<=Width-1)
                {
                    if (mas[(i+1)+k*Width]) count++;
                }   
                if ( ((i-1)>=0) && ((k+1)<=Width-1) )
                {
                    if (mas[(i-1)+(k+1)*Width]) count++;
                }
                if ( (k+1)<=Width-1 )
                {
                    if (mas[i+(k+1)*Width]) count++;
                }
                if ( ((i+1)<=Width-1) && ((k+1)<=Width-1) )
                {
                    if (mas[(i+1)+(k+1)*Width]) count++;
                }
                
                if ((count<2) || (count>3))
                {
                mas2[i+k*Width]=false;
                cout<<dead;
                }
                else
                {
                    if ((!mas2[i+k*Width]) && (count !=3))
                    {
                mas2[i+k*Width]=false;
                cout<<dead;
                    }
                    else
                    {
                mas2[i+k*Width]=true;
                cout<<live;
                    }
                }
                count=0;
                
            }
        cout<<'\n';
        }
        cout<<'\n';
        
        for (int i=0; i<(Width*Width); i++)
        {
            mas[i]=mas2[i];
        }
    
    }
return 0;
}
Миниатюры
Программа Жизнь  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru