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

ООП - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.90
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
21.06.2010, 03:02     ООП #1
Привет всем, народ дайте какую-нибудь интересную задачку на ООП, (однообразные задачи из учебников достали уже), чтоб она затрагивала как можно больше тем ООП (можно сказать итоговая задача по разделу ООП), и чтоб ее можно было решить на консоли. (Морской бой не предлагать, этот пример разбирал в учебнике). Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2010, 03:02     ООП
Посмотрите здесь:

ООП на С++ C++
C++ ООП C++
C++ ООП
C++ ООП
C++ ООП
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
21.06.2010, 05:10     ООП #2
напиши тетрис со всеми правилами настоящего тетриса, только придется использовать borland C++, насколько я знаю, только у них есть библиотеки для рисования в консоли.
AnTro.Net
 Аватар для AnTro.Net
131 / 127 / 16
Регистрация: 28.04.2010
Сообщений: 930
21.06.2010, 05:12     ООП #3
хм, сделай пятнашки)

если выйдет, напиши мне 437675148 ,интересно)

можно еще сделать какие то карты, игру.
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
21.06.2010, 05:15  [ТС]     ООП #4
Aye Aye, У меня visual studio 2005, не знаю с графикой в консоли совсем не знаком (

Добавлено через 3 минуты
AnTro.Net, Пятнашки попробую написать)
AnTro.Net
 Аватар для AnTro.Net
131 / 127 / 16
Регистрация: 28.04.2010
Сообщений: 930
21.06.2010, 05:17     ООП #5
_Eldar_, ок
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.06.2010, 06:59     ООП #6
Бинарное дерево делал? Октодерево? Дерево с ненормированным числом потомков узла?
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
22.06.2010, 07:19  [ТС]     ООП #7
Пятнашки сделал прикольно получилось, только вводить с клавиатуры координаты долго
вот код (принимаю критику):

файл Pyatn.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
 
class Space{
private:
    std::vector<int> arr; // Игровое поле
    int num_X; // индекс пустого элемента (-1)
    int step;  // шаг игры
public:
    Space();
    void Show();
    void Move();
    bool Validate_num(int);
    bool Validate_End();
};
файл Pyatn.cpp
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
135
136
137
138
139
#include "Pyatn.h"
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <conio.h>
 
using namespace std;
 
Space::Space(){
    for(int i = 0; i < 16; ++i)
        if (i < 15) arr.push_back(i + 1);
        else arr.push_back(-1);
 
    random_shuffle(arr.begin(), arr.end() - 1);
        
    num_X = 15;
    step = 0;
}
 
void Space::Show(){
    system("cls");
    cout << "======================================" << endl;
    cout << "Шаг " << ++step << endl << endl;
    int count = 0;
    cout << setw(6) << '|'
         << setw(3) << 'A' << " |"
         << setw(3) << 'B' << " |"
         << setw(3) << 'C' << " |"
         << setw(3) << 'D' << " |" << endl;
    cout << "--------------------------" << endl;
    for(vector<int>::iterator i = arr.begin(); i != arr.end(); ++i){
 
        
        if(! (count % 4)) cout << setw(3) << count / 4 + 1 << ". |";
        ++count;
        if(count % 4){
            if (*i == -1) cout << setw(3) << 'X' << " |";
            else cout << setw(3) << *i << " |";
 
        }
        else {
            if (*i == -1) cout << setw(3) << 'X' << " |";
            else cout << setw(3) << *i << " |";
            cout << endl;
            cout << "--------------------------" << endl;
        }
    }
    cout << endl;
         
}
 
void Space::Move(){
 
    string u_letter("ABCD");
    string l_letter("abcd");
    unsigned char row_cin;
    int row, col, value;
    int num_field;
    bool success = false;
    
    while(!success ){
        cout << "Введите координаты перемещаемой клетки: ";
        cin >> setw(3) >> row_cin;
        col = u_letter.find(row_cin);
        if(col == -1) col = l_letter.find(row_cin);
        if(col == -1) {
            cout << "Ошибка, повторите ввод" << endl;
            continue;
        }
        while(true){
            cin >> row;
            if(cin.peek() == '\n' && row <= 4){cin.get(); break;}
            else{
                cout << "Повторите ввод строки (ожидается целое число <= 4)" << endl;
                cin.clear();
                while(cin.get() != '\n'){};
            }
 
        }
        success = true;
    }
 
    num_field = col + (row - 1) * 4;
 
    if (Validate_num(num_field)){
        int temp = arr[num_field];
        arr[num_field] = arr[num_X];
        arr[num_X] = temp;
        num_X = num_field;
    }
}
 
bool Space::Validate_num(int num_field){    
 
    try{
        arr.at(num_field);
    }
    catch(out_of_range){
        cout << "Ошибка, повторите ввод" << endl;
        return false;
    }
    
    vector<int> round_elem;
    try{
        round_elem.push_back(arr.at(num_X - 1));
    } catch(out_of_range){};
    try{
        round_elem.push_back(arr.at(num_X + 1));
    } catch(out_of_range){};
    try{
        round_elem.push_back(arr.at(num_X - 4));
    } catch(out_of_range){};
    try{
        round_elem.push_back(arr.at(num_X + 4));
    } catch(out_of_range){};
 
    for(vector<int>::iterator i = round_elem.begin(); i != round_elem.end(); ++i){
        if(*i == arr.at(num_field)) 
            return true;    
    }
    cout << "Невозможно переместить клетку" << endl;
    return false;
 
}
bool Space::Validate_End(){
    
    vector<int> sort_arr(arr);
    vector<int>::iterator i, j ;
    sort(sort_arr.begin(), sort_arr.end());
 
    cout << endl;
    for(i = arr.begin(), j = sort_arr.begin(); i != arr.end() - 1; ++i, ++j){
        if(*i == -1) ++i;
        if(*j == -1 ) ++j;
        if(*i != *j) return false;
    }
    cout << "Победа на " << step << " шаге !!!" << endl;
    return true;
}
файл Main.cpp
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
#include "Pyatn.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int main(){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    srand(unsigned(time(NULL)));
 
    Space game_field;
 
    while(!game_field.Validate_End()){
        game_field.Show();
        game_field.Move();
    }
    
    cout << endl;
    system("pause");
    return 0;
}
AnTro.Net
 Аватар для AnTro.Net
131 / 127 / 16
Регистрация: 28.04.2010
Сообщений: 930
22.06.2010, 09:15     ООП #8
20 минут отдал пятнашкам) славная прога)
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
22.06.2010, 09:17  [ТС]     ООП #9
AnTro.Net, там я косяк нашел) шаги считаются даже если вводишь неверную координату:
переписал немного:
файл Pyatn.h
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
135
136
137
138
139
140
141
142
143
#include "Pyatn.h"
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
Space::Space(){
    for(int i = 0; i < 16; ++i)
        if (i < 15) arr.push_back(i + 1);
        else arr.push_back(-1);
 
    random_shuffle(arr.begin(), arr.end() - 1);
        
    num_X = 15;
    step = 1;
}
 
void Space::Show(){ 
    system("cls");
    cout << "======================================" << endl;
    cout << "Шаг " << step << endl << endl;
    int count = 0;
    cout << setw(6) << '|'
         << setw(3) << 'A' << " |"
         << setw(3) << 'B' << " |"
         << setw(3) << 'C' << " |"
         << setw(3) << 'D' << " |" << endl;
    cout << "--------------------------" << endl;
    for(vector<int>::iterator i = arr.begin(); i != arr.end(); ++i){
 
        
        if(! (count % 4)) cout << setw(3) << count / 4 + 1 << ". |";
        ++count;
        if(count % 4){
            if (*i == -1) cout << setw(3) << 'X' << " |";
            else cout << setw(3) << *i << " |";
 
        }
        else {
            if (*i == -1) cout << setw(3) << 'X' << " |";
            else cout << setw(3) << *i << " |";
            cout << endl;
            cout << "--------------------------" << endl;
        }
    }
    cout << endl;
         
}
 
void Space::Move(){
 
    string u_letter("ABCD");
    string l_letter("abcd");
    unsigned char row_cin;
    int row, col, value;
    int num_field;
    bool success = false;
    
    while(!success ){
        cout << "Введите координаты перемещаемой клетки: ";
        cin >> setw(3) >> row_cin;
        col = u_letter.find(row_cin);
        if(col == -1) col = l_letter.find(row_cin);
        if(col == -1) {
            cout << "Ошибка, повторите ввод" << endl;
            continue;
        }
        while(true){
            cin >> row;
            if(cin.peek() == '\n' && row <= 4){cin.get(); break;}
            else{
                cout << "Повторите ввод строки (ожидается целое число <= 4)" << endl;
                cin.clear();
                while(cin.get() != '\n'){};
            }
 
        }
        success = true;
    }
 
    num_field = col + (row - 1) * 4;
 
    if (Validate_num(num_field)){
        int temp = arr[num_field];
        arr[num_field] = arr[num_X];
        arr[num_X] = temp;
        num_X = num_field;
        ++step;
    }
}
 
bool Space::Validate_num(int num_field){
    
 
    try{
        arr.at(num_field);
    }
    catch(out_of_range){
        cout << "Ошибка, повторите ввод" << endl;
        return false;
    }
    
    vector<int> round_elem;
    try{
        round_elem.push_back(arr.at(num_X - 1));
    } catch(out_of_range){};
    try{
        round_elem.push_back(arr.at(num_X + 1));
    } catch(out_of_range){};
    try{
        round_elem.push_back(arr.at(num_X - 4));
    } catch(out_of_range){};
    try{
        round_elem.push_back(arr.at(num_X + 4));
    } catch(out_of_range){};
 
    for(vector<int>::iterator i = round_elem.begin(); i != round_elem.end(); ++i){
        if(*i == arr.at(num_field)) 
            return true;    
    }
    cout << "Невозможно переместить клетку" << endl;
    Sleep(1000);
    return false;
 
}
bool Space::Validate_End(){
    
    vector<int> sort_arr(arr);
    vector<int>::iterator i, j ;
    sort(sort_arr.begin(), sort_arr.end());
 
    cout << endl;
    for(i = arr.begin(), j = sort_arr.begin(); i != arr.end() - 1; ++i, ++j){
        if(*i == -1) ++i;
        if(*j == -1 ) ++j;
        if(*i != *j) return false;
    }
    cout << "Победа на " << step << " шаге !!!" << endl;
    return true;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
22.06.2010, 13:38     ООП #10
Цитата Сообщение от _Eldar_ Посмотреть сообщение
вот код (принимаю критику):
Цитата Сообщение от _Eldar_ Посмотреть сообщение
C++
1
2
3
 for(int i = 0; i < 16; ++i)
    if (i < 15) arr.push_back(i + 1);
        else arr.push_back(-1);
Хм...

Цитата Сообщение от _Eldar_ Посмотреть сообщение
C++
1
2
3
4
while(!game_field.Validate_End()){
    game_field.Show();
    game_field.Move();
}
1) Где в программе комментарий, что надо именно так использовать данный класс(т.е. вызывать методы в таком порядке)?
2) Зачем вообще этому всему быть открытым?

Цитата Сообщение от _Eldar_ Посмотреть сообщение
C++
1
int num_X; // индекс пустого элемента (-1)
Вместо этого комментария лучше бы здесь было имя переменной говорящее само за себя.

Цитата Сообщение от _Eldar_ Посмотреть сообщение
C++
1
std::vector<int> arr; // Игровое поле
То же самое насчёт имени и комментария + не вижу никакого смысла в использовании вектора в данной программе.

Цитата Сообщение от _Eldar_ Посмотреть сообщение
C++
1
2
3
int temp = arr[num_field];
 arr[num_field] = arr[num_X];
 arr[num_X] = temp;
Используй std::swap вместо этого.

Плюс ко всему в коде куча "магических чисел"(15,16,4).

P.S. Лично я бы не стал использовать ООП для написания Пятнашек
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.06.2010, 13:55     ООП #11
Цитата Сообщение от _Eldar_ Посмотреть сообщение
принимаю критику
1. Никогда не смешивай логику работы и пользовательский интерфейс.
2. То что ты читал - не ООП, а механизмы языка для написания программ в стиле ООП.
3. Пятнашки - никакой пример для изучения ООП.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,123
Записей в блоге: 26
22.06.2010, 16:24     ООП #12
Цитата Сообщение от _Eldar_ Посмотреть сообщение
вот код (принимаю критику)
И где тут ООП?

Аналогично где может быть ООП при реализации морского боя или тетриса?

Добавлено через 20 секунд
Упс... опоздал...
N@um
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 1
22.06.2010, 16:27     ООП #13
напиши шашки
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,123
Записей в блоге: 26
22.06.2010, 16:40     ООП #14
Цитата Сообщение от N@um Посмотреть сообщение
напиши шашки
Там тоже нет ООП
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,654
22.06.2010, 22:10     ООП #15
Вот с таким интерфейсом по-моему удобнее играть:
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#include <vector>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <ctime>
 
class T_pyatnashki
{    
    const static int          MIN_ELEM_VAL  = 1;
    const static int          POLE_DIM      = 4;
    const static int          POLE_SIZE     = POLE_DIM * POLE_DIM;
    const static int          EMPTY_VAL     = POLE_SIZE;
    const static int          MAX_ELEM_VAL  = POLE_SIZE - 1;
    typedef std::vector<int>  T_pole;
 
    T_pole                    pole_;
    int                       step_count_;
public:
    T_pyatnashki() : pole_(POLE_SIZE), step_count_(0)
    {
        struct T_generate_podrjad
        {
            int begin_num_;
            T_generate_podrjad(int  begin_num) : begin_num_(begin_num)
            {}
 
            int operator() ()
            {
                return begin_num_++;
            }
        };
        std::generate(pole_.begin(), pole_.end(), T_generate_podrjad(MIN_ELEM_VAL));
        std::random_shuffle(pole_.begin(), pole_.end());         
    }
    //------------------------------------------------------------------------------
    void play()
    {
        for(;;)
        {
            show();
            if(is_good_end())
            {
                std::cout << "Задача решена за "
                          << step_count_
                          << " шагов."
                          << std::endl;
                break;
            }
            if(is_bad_end())
            {
                std::cout << "Задача не имеет решения."
                          << std::endl;
                break;
            }
 
            ++step_count_;
            move();       
        }
    }
    //------------------------------------------------------------------------------
private:
    //------------------------------------------------------------------------------
    int i_from_k(int k)
    {
        return k / POLE_DIM;
    }
    //------------------------------------------------------------------------------
    int j_from_k(int k)
    {
        return k % POLE_DIM;
    }
    //------------------------------------------------------------------------------
    void show()
    {
        struct T_print_elem
        {
            enum
            {
                ELEM_WIDTH = 4
            };            
            int  row_len_;
            int  elem_count_;
            T_print_elem() : row_len_(POLE_DIM), elem_count_(0)
            {}
 
            void operator() (int elem)
            {                
                if(elem == EMPTY_VAL)
                {
                    std::cout << std::setw(ELEM_WIDTH)
                              << "";       
                }
                else
                {
                    std::cout << std::setw(ELEM_WIDTH)
                              << elem;
                }                
                if(++elem_count_ % row_len_ == 0)
                {
                    std::cout << std::endl
                              << std::endl;
                }           
            }
        };
        std::for_each(pole_.begin(), pole_.end(), T_print_elem());
        std::cout << std::endl;
    }
    //------------------------------------------------------------------------------
    int k_of_elem(int elem)
    {
        return  std::find(pole_.begin(), pole_.end(), elem) - pole_.begin();
    }
    //------------------------------------------------------------------------------
    bool is_ryadom_s_pustym(int elem)
    {
        int empty_elem_i  = i_from_k(k_of_elem(EMPTY_VAL)); 
        int empty_elem_j  = j_from_k(k_of_elem(EMPTY_VAL)); 
 
        int elem_i        = i_from_k(k_of_elem(elem)); 
        int elem_j        = j_from_k(k_of_elem(elem)); 
 
        int abs_i_shift = abs(empty_elem_i - elem_i);
        int abs_j_shift = abs(empty_elem_j - elem_j);
 
        return abs_i_shift + abs_j_shift == 1;
    }
    //------------------------------------------------------------------------------
    void swap_pole_elems
        (
            T_pole&  pole,
            int      elem1,
            int      elem2
        )
    {
         std::iter_swap(std::find(pole.begin(), pole.end(), elem1),
                        std::find(pole.begin(), pole.end(), elem2));        
    }
    //------------------------------------------------------------------------------
    void move()
    {        
        int  moving_elem;
        do
        {
            std::cout << "Шаг "
                      << step_count_
                      << ". Вы двигаете кость № ";
            std::cin >> moving_elem;
        }while(moving_elem < MIN_ELEM_VAL || MAX_ELEM_VAL < moving_elem
               || !is_ryadom_s_pustym(moving_elem));
 
        swap_pole_elems(pole_, moving_elem, EMPTY_VAL);
    }
    //------------------------------------------------------------------------------
    bool is_good_end()
    {
        T_pole  good_end_pole(pole_);
        std::sort(good_end_pole.begin(), good_end_pole.end());        
        return pole_ == good_end_pole;
    }
    //------------------------------------------------------------------------------
    bool is_bad_end()
    {
        T_pole  bad_end_pole(pole_);
        std::sort(bad_end_pole.begin(), bad_end_pole.end()); 
        swap_pole_elems(bad_end_pole, MAX_ELEM_VAL, MAX_ELEM_VAL - 1);
        return pole_ == bad_end_pole;
    }
};
 
int main()
{
    std::locale::global(std::locale(""));
    srand(static_cast<unsigned>(time(0)));
    T_pyatnashki  pyatnashki;
    pyatnashki.play();
    return 0;
}
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,123
Записей в блоге: 26
22.06.2010, 22:17     ООП #16
_Eldar_, могу подкинуть немного другую идею. Попробуй разбить свою программу на две части: игровой движок (который отвечает за внутреннее состояние игры) и ui - пользовательский интерфейс (та часть, которая непосредственно будет взаимодействовать с игроком). В качестве проверки правильности можешь попробовать на один и тот же движок привинтить два разных ui: один консольный, другой графический. На мой взгляд это будет очень полезный опыт
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
23.06.2010, 01:16  [ТС]     ООП #17
rangerx, Коментарии я начал писать (хватило только на первые три строки)
Цитата Сообщение от rangerx Посмотреть сообщение
2) Зачем вообще этому всему быть открытым?
У меня эти элементы находятся в private:
std::vector<int> arr;
int num_X;
int step;
Про магические числа - можно было конечно все сделать через именнованные константы, но не думаю что правилы игры в пятнашки будут меняться.
По поводу векторов - а чем бы воспользовался? А в целом спасибо за критику.
Всем остальным - ну раз пятнашки, шашки не ООП, так предложите такую задачу чтоб была ООП и ее можно было решить в КОНСОЛИ.

Добавлено через 17 минут
Mr.X, Да гораздо удобнее
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.06.2010, 01:37     ООП #18
_Eldar_, подойдите к вопросу глобальнее, сделайте к примеру учёт зверюшек в зоопарке... Общий класс - живность с характерным для всех свойством - время жизни. От него подклассы - млекопитающие, птицы, земноводные, рыбы... У каждого свои свойства: у птиц к примеру размах крыльев...
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
23.06.2010, 01:43  [ТС]     ООП #19
easybudda, Хорошо, зоопарк я опишу, а что будет программа выполнять?

Добавлено через 1 минуту
Ну есть у меня куча зверей - просто выводить их количество и возраст к пимеру?

Добавлено через 2 минуты
добавление и удаление зверей в парк
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2010, 01:50     ООП
Еще ссылки по теме:

ООП C++
C++ ООП
C++ ООП

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.06.2010, 01:50     ООП #20
_Eldar_, ну к примеру, сколько в день нужно жрачки всем млекопитающим, или сколько аквариумов нужно для рыб при учёте, что одна рыбина сожрёт другую, если та в три раза меньше... Ну или прирост поголовья пингвинов вычислять и общий процент их от нелетающих птиц...

Добавлено через 4 минуты
Цитата Сообщение от _Eldar_ Посмотреть сообщение
добавление и удаление зверей в парк
Ну это само собой, без этого ни одна "база данных" не обходится, вот вычурные поиски и сортировки по ним делать - по-моему интереснее...
Yandex
Объявления
23.06.2010, 01:50     ООП
Ответ Создать тему
Опции темы

Текущее время: 17:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru