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

Жизнь (нужна поддержка) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка очереди HeapSort http://www.cyberforum.ru/cpp-beginners/thread357820.html
Товарищи подскажите пожалуйста, нужно отсортировать очередь реализованную на списках методом пирамидальной сортировки. реализация очереди самая обыкновенная код могу днём предоставить. Сейчас интересует логика.
C++ Перевод long double в string Дана задача http://www.cyberforum.ru/attachment.php?attachmentid=97778&stc=1&d=1317238135 Я не понимаю как конвертировать long double в string. С помощью ostrstream ? Но у меня мне получается, компилятор ругается long double z= 5789847.45; string k; k.ostrstream=z; Ума не приложу как сделать данное задание. Пожалуйста помогите. http://www.cyberforum.ru/cpp-beginners/thread357798.html
C++ Передача массива в функцию
#include <iostream> #include <fstream> #include <time.h> using namespace std; void maxx(); int main(int argc, char *argv) {
Построение массива с элементами C++
Помогите, пожалуйста с задачей. После завтра сдавать, а я не знаю с чего начать и как решать.... Если не трудно помогите. Условие задачи: Дан массив A(2N). Постройте массивы с элементами, соответственно равными: а) a1, aN+1, a2, aN+2, ... , aN, a2N; б) a2N, a1, a2N-1, a2, ..., aN+1, aN. Заранее спс.
C++ Создайте текстовый файл, содержащий сведения о клиентах фирмы: http://www.cyberforum.ru/cpp-beginners/thread357783.html
Создайте текстовый файл, содержащий сведения о клиентах фирмы: наименование организации, дата основания, количество договоров на приобретение товаров, общая стоимость договоров. Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в порядке увеличения количества...
C++ Помогите пожалуйста разобраться c++ Создайте текстовый файл, содержащий сведения о клиентах фирмы: наименование организации, дата основания, количество договоров на приобретение товаров, общая стоимость договоров. Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в порядке увеличения количества... подробнее

Показать сообщение отдельно
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
01.10.2011, 14:56  [ТС]     Жизнь (нужна поддержка)
Вроде как всё закончил, но при попытке запуска возникает проблема: любая комбинация клеток остаётся на месте первые два хода, а потом просто исчезает.

Взгляните, пожалуйста, свежим незамыленным взглядом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef LIFE_H
#define LIFE_H
 
class Life
{
public:
    Life ();                        // конструктор
    int around ( int, int );        // считает, сколько клеток вокруг
    void deadOrAlive ( int, int );  // изменяет клетку в зависимости от условий
    void throughArray ();           // прочесывает массив и проверяет каждую его клетку
    void copyArrays ();             // копирует запасной массив в основной
    void clean_Array ();            // очищает запасной массив
    void printArray ();             // печатает массив
    
    int alive ();                   // считает, сколько живых клеток осталось
        
private:
    char array [ 24 ][ 79 ];        // основной массив
    char _array [ 24 ][ 79 ];       // запасной массив
};
 
#endif
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
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include "life.h"
using namespace std;
 
Life::Life ()
{   
    // заполняем первый массив
    for ( int a = 0; a < 24; a++ )
        for ( int b = 0; b < 79; b++ )
            array [ a ][ b ] = 0;
    
    array [ 0 ][ 0 ] = 201;
    array [ 0 ][ 78 ] = 187;
    array [ 23 ][ 0 ] = 200;
    array [ 23 ][ 78 ] = 188;
    
    for ( int y = 1; y < 23; y++ )
        array [ y ][ 0 ] = 186;
        
    for ( int _y = 1; _y < 23; _y++ )
        array [ _y ][ 78 ] = 186;
        
    for ( int x = 1; x < 78; x++ )
        array [ 0 ][ x ] = 205;
        
    for ( int _x = 1; _x < 78; _x++ )
        array [ 23 ][ _x ] = 205;
        
    // рисуем глайдер для тестирования        
    array [ 4 ][ 4 ] = 253;
    array [ 5 ][ 5 ] = 253;
    array [ 6 ][ 5 ] = 253;
    array [ 6 ][ 4 ] = 253;
    array [ 6 ][ 3 ] = 253;
 
    
    // копируем первый массив во второй
    for ( int f = 0; f < 24; f++ )
        for ( int j = 0; j < 79; j++ )
            _array [ f ][ j ] = array [ f ][ j ];
}
 
// считает, сколько клеток вокруг
int Life::around ( int y, int x )
{
    int around = 0;
    
    if ( array [ y ][ x + 1 ] == 253 )
       around++;
       
    if ( array [ y + 1 ][ x + 1 ] == 253 )
       around++;
       
    if ( array [ y + 1 ][ x ] == 253 )
       around++;
    
    if ( array [ y + 1 ][ x - 1 ] == 253 )
       around++;
       
    if ( array [ y ][ x - 1 ] == 253 )
       around++;
       
    if ( array [ y - 1 ][ x - 1 ] == 253 )
       around++;
       
    if ( array [ y - 1 ][ x ] == 253 )
       around++;
       
    if ( array [ y - 1 ][ x + 1 ] == 253 )
       around++;
 
    return around;
}
 
// изменяет клетку в зависимости от условий
void Life::deadOrAlive ( int y, int x )
{
    if ( array [ y ][ x ] == 0 )            // если клетка мертвая
        if ( around ( y, x ) == 3 )         // и вокруг 3 живых,
            _array [ y ][ x ] = 253;          // то клетка оживает
            
    if ( array [ y ][ x ] == 1 )
        if ( around ( y, x ) < 2 || around ( y, x ) > 3 )
            _array [ y ][ x ] = 0;
}
 
// прочесывает массив и проверяет каждую его клетку
void Life::throughArray ()
{
    for ( int y = 0; y < 24; y++ )
        for ( int x = 0; x < 79; x++ )
            deadOrAlive ( y, x );
}
 
// копирует запасной массив в основной
void Life::copyArrays ()
{
    for ( int y = 1; y < 23; y++ )
        for ( int x = 1; x < 78; x++ )
            array [ y ][ x ] = _array [ y ][ x ];
}
 
// очищает запасной массив
void Life::clean_Array ()
{
    for ( int y = 0; y < 24; y++ )
        for ( int x = 0; x < 79; x++ )
            _array [ y ][ x ] = 0;
}
 
// печатает массив
void Life::printArray ()
{
    for ( int i = 0; i < 24; i++ )
    {
        for ( int k = 0; k < 79; k++ )
            cout << array [ i ][ k ];
            
        cout << endl;
    }
}
 
// считает, сколько живых клеток осталось
int Life::alive ()
{
    int alive = 0;
    
    for ( int y = 1; y < 23; y++ )
        for ( int x = 1; x < 78; x++ )
            if ( array [ y ][ x ] != 0 )
                alive++;
                
    return alive;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <windows.h>
#include "life.h"
#include "life.cpp"
 
 
int main ()
{
    Life life;
    
    while ( life.alive () != 0 )
    {
        life.throughArray ();
        life.printArray ();
        life.copyArrays ();
        life.clean_Array();
        
        Sleep ( 450 );
        system ( "cls" );
    }
    
    system ( "pause" );
    return 0;
}
Спасибо.

Добавлено через 10 минут
Уважаемые, кто поможет довести до ума, с меня небольшая печенька - 5 WMZ.
 
Текущее время: 04:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru