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

игра "жизнь." - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как переделать массив что бы не было его остановки и как добавить индекс http://www.cyberforum.ru/cpp-beginners/thread813346.html
Такая вот задача найти индекс максимального элемента массива , вот мой код что тут не так и что следует добавить ? и почему у меня индекс вообще н правильно считает ? #include<iostream> #include<locale> using std::cout; using std::cin; using std::swap; using std::endl; #include<iomanip> using std::setw;
C++ Как подключить openGL к своей программе? везде написано, что она входит в состав windows. Пишу код в microsoft visual C++ 2010 express. Как мне туда подключить openGL ? Пишу openGL-овский код: glClearColor(1.0, 1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glutDispayFunc(display); и мне IDE все это подчеркивает и говорит, что не знает, что это такое :( http://www.cyberforum.ru/cpp-beginners/thread813344.html
C++ Ошибка в функции, связанная с использованием памяти
Все доброго времени суток. Помогите, пожалуйста, найти ошибку в моей функции: #include <wchar.h> #include "functions.h" // файл с прототипами функций wchar_t* cleanwchar_t out, const wchar_t in) { int n = wcslen(in);
Составить Задачю по теме: Обработка символьной и строковой информации C++
Результаты вступительных экзаменов в вуз предоставлены в виде списка из N строк, в каждой строке которого записаны фамилия студента и оценки по каждому из M экзаменов. Фамилия и оценки разделены пробелами. Например: Иванов 4 5 Соколова 3 5 Сидоров 2 5 Петров 5 5 Дроздова 4 2 Определить количество абитуриентов, сдавших хотя бы один экзамен на "двойку". Вывести фамилии таких учеников....
C++ Динамические массивы http://www.cyberforum.ru/cpp-beginners/thread813313.html
Даны целое число n и последовательность действительных чисел r1, r2, ..., rn, среди которых заведомо есть как отрицательные, так и положительные. Получить x1*y1+...+xs*ys, где x1, ..., xp - отрицательные члены последовательности r1, r2, ..., rn, взятые в порядке их следования, y1, ..., yq - положительные члены, взятые в обратном порядке. Все массивы в программе должны быть динамическими ...
C++ Массив: Построить массив из нулей и единиц, в которой bi = 1 тогда и только тогда, когда в i-ой строке матрицы есть хотя бы отрицательный элемент Даны натуральное число n, действительная квадратная матрица порядка n. Построить последовательность b1, b2, …, bn из нулей и единиц, в которой bi = 1 тогда и только тогда, когда в i-ой строке матрицы есть хотя бы один отрицательный элемент. Все массивы в программе должны быть динамическими. подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
20.03.2013, 04:49     игра "жизнь."
Фан зона :
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
#include <iostream>
 
const int HEIGHT = 20;
const int LENGTH = 40;
 
char field[HEIGHT][LENGTH];
char alive_field[HEIGHT][LENGTH];
 
// Конструктор подготовит поле к работе.
void construct_it(char (*f)[LENGTH])
{
    for (int i = 0; i < HEIGHT; ++i)
        for (int j = 0; j < LENGTH; ++j)
            f[i][j] = '.';
 
}
 
// Отобразить поле.
void show_it(char (*f)[LENGTH])
{
    for (int i = 0; i < HEIGHT; ++i)
        for (int j = 0; j < LENGTH; ++j)
        {
            std::cout << f[i][j] << ' ';
            if (j == LENGTH - 1)
                std::cout << '\n';
        }
}
 
// Задаст начально значение.
void init_it()
{
    const int figures = 3; // Количество фигур.
    const int pointers = 5; // Количество символов для одной фируры.
    // Найдём начало для отсчёта по горизонтали.
    int start_l = (LENGTH - ((pointers+1) * figures)) / 2; // +1 Это для пробела между..
    // Найдём начало для отсчёта по вертикали.
    const int start_h = HEIGHT / 2;
 
    // Зададим фигуры.
    for (int i = 0; i < figures; ++i)
    {
        for (int j = 0; j < pointers; ++j)
            field[start_h][start_l++] = '#';
        field[start_h][start_l++] = '.';
    }
}
 
// Проверка соседей.
int neighbour(int h, int l)
{
    const int count_times = 2;
    int nb = 0;
 
    // По вертикали.
    for (int i = h-1, t = 0; t < count_times; ++t, i += 2)
        if (field[i][l] == '#')
            ++nb;
    // По горизонтали.
    for (int i = l-1, t = 0; t < count_times; ++t, i += 2)
        if (field[h][i] == '#')
            ++nb;
    // По диагонали.
    for (int i = h-1, j = l-1, t = 0; t < count_times; ++t, i += 2, j+=2)
        if (field[i][j] == '#')
            ++nb;
    // По диагонали.
    for (int i = h-1, j = l+1, t = 0; t < count_times; ++t, i += 2, j-=2)
        if (field[i][j] == '#')
            ++nb;
 
    return nb;
}
 
// Функция рождения и смерти.
void new_life()
{
    // Инициализируем единицей и до -1 значения для того,
    // чтобы neighbour() не выходила за пределы.
    for (int i = 1; i < HEIGHT-1; ++i)
        for (int j = 1; j < LENGTH-1; ++j)
        {
            // Рождение новой от трёх сосдедей.
            if (field[i][j] == '.' && (neighbour(i, j) == 3))
                alive_field[i][j] = '#';
            // Смерть от одиночества.
            else if (field[i][j] == '#' && (neighbour(i, j) < 2))
                alive_field[i][j] = '.';
            // Смерть от тесноты.
            else if (field[i][j] == '#' && (neighbour(i, j) > 3))
                alive_field[i][j] = '.';
            else 
                alive_field[i][j] = field[i][j];
        }
}
 
// Копирует из одно массива в другой.
void copy_to_from(char (*to)[LENGTH], const char (*from)[LENGTH])
{
    for (int i = 0; i < HEIGHT; ++i)
        for (int j = 0; j < LENGTH; ++j)
            to[i][j] = from[i][j];
}
 
int main()
{
    construct_it(field);
    init_it();
    std::cout << "Step1:\n\n";
    show_it(field);
 
    const int steps = 19;
    for (int i = 0; i < steps; ++i)
    {
        std::cout << "\nStep" << i+2 << ":\n";
        new_life();
        show_it(alive_field);
        copy_to_from(field, alive_field);
    }
 
    return 0;
}
Добавлено через 1 минуту
20 шагов.

Добавлено через 1 минуту
http://liveworkspace.org/code/2g2WCJ$0
 
Текущее время: 06:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru