Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
1

ООП

21.06.2010, 03:02. Показов 4092. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем, народ дайте какую-нибудь интересную задачку на ООП, (однообразные задачи из учебников достали уже), чтоб она затрагивала как можно больше тем ООП (можно сказать итоговая задача по разделу ООП), и чтоб ее можно было решить на консоли. (Морской бой не предлагать, этот пример разбирал в учебнике). Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2010, 03:02
Ответы с готовыми решениями:

ООП на С++
Помогите пожалуйста!! Не понимаю как это сделать(( Создать программу с классом Student...

ООП
Создать класс Vegetable, содержащий следующие элементы: - поле «вес» float Mass; - поле...

ООП
Доброго времени суток. Хотелось бы получить совет по поводу следующего. Имеется базовый класс ...

по ООП .
Помогите пожалуйтса с решением задач ! на С++ 1.Дана неубывающая последовательность...

26
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
21.06.2010, 05:10 2
напиши тетрис со всеми правилами настоящего тетриса, только придется использовать borland C++, насколько я знаю, только у них есть библиотеки для рисования в консоли.
0
131 / 127 / 50
Регистрация: 28.04.2010
Сообщений: 928
21.06.2010, 05:12 3
хм, сделай пятнашки)

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

можно еще сделать какие то карты, игру.
0
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
21.06.2010, 05:15  [ТС] 4
Aye Aye, У меня visual studio 2005, не знаю с графикой в консоли совсем не знаком (

Добавлено через 3 минуты
AnTro.Net, Пятнашки попробую написать)
0
131 / 127 / 50
Регистрация: 28.04.2010
Сообщений: 928
21.06.2010, 05:17 5
_Eldar_, ок
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
21.06.2010, 06:59 6
Бинарное дерево делал? Октодерево? Дерево с ненормированным числом потомков узла?
0
45 / 30 / 11
Регистрация: 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;
}
0
131 / 127 / 50
Регистрация: 28.04.2010
Сообщений: 928
22.06.2010, 09:15 8
20 минут отдал пятнашкам) славная прога)
0
45 / 30 / 11
Регистрация: 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;
}
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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. Лично я бы не стал использовать ООП для написания Пятнашек
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
22.06.2010, 13:55 11
Цитата Сообщение от _Eldar_ Посмотреть сообщение
принимаю критику
1. Никогда не смешивай логику работы и пользовательский интерфейс.
2. То что ты читал - не ООП, а механизмы языка для написания программ в стиле ООП.
3. Пятнашки - никакой пример для изучения ООП.
0
Evg
Эксперт CАвтор FAQ
21280 / 8302 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
22.06.2010, 16:24 12
Цитата Сообщение от _Eldar_ Посмотреть сообщение
вот код (принимаю критику)
И где тут ООП?

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

Добавлено через 20 секунд
Упс... опоздал...
0
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 1
22.06.2010, 16:27 13
напиши шашки
0
Evg
Эксперт CАвтор FAQ
21280 / 8302 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
22.06.2010, 16:40 14
Цитата Сообщение от N@um Посмотреть сообщение
напиши шашки
Там тоже нет ООП
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
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;
}
1
Evg
Эксперт CАвтор FAQ
21280 / 8302 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
22.06.2010, 22:17 16
_Eldar_, могу подкинуть немного другую идею. Попробуй разбить свою программу на две части: игровой движок (который отвечает за внутреннее состояние игры) и ui - пользовательский интерфейс (та часть, которая непосредственно будет взаимодействовать с игроком). В качестве проверки правильности можешь попробовать на один и тот же движок привинтить два разных ui: один консольный, другой графический. На мой взгляд это будет очень полезный опыт
0
45 / 30 / 11
Регистрация: 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, Да гораздо удобнее
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
23.06.2010, 01:37 18
_Eldar_, подойдите к вопросу глобальнее, сделайте к примеру учёт зверюшек в зоопарке... Общий класс - живность с характерным для всех свойством - время жизни. От него подклассы - млекопитающие, птицы, земноводные, рыбы... У каждого свои свойства: у птиц к примеру размах крыльев...
0
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
23.06.2010, 01:43  [ТС] 19
easybudda, Хорошо, зоопарк я опишу, а что будет программа выполнять?

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

Добавлено через 2 минуты
добавление и удаление зверей в парк
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
23.06.2010, 01:50 20
_Eldar_, ну к примеру, сколько в день нужно жрачки всем млекопитающим, или сколько аквариумов нужно для рыб при учёте, что одна рыбина сожрёт другую, если та в три раза меньше... Ну или прирост поголовья пингвинов вычислять и общий процент их от нелетающих птиц...

Добавлено через 4 минуты
Цитата Сообщение от _Eldar_ Посмотреть сообщение
добавление и удаление зверей в парк
Ну это само собой, без этого ни одна "база данных" не обходится, вот вычурные поиски и сортировки по ним делать - по-моему интереснее...
0
23.06.2010, 01:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2010, 01:50
Помогаю со студенческими работами здесь

ООП
Подскажите статью или книгу где рассказывается про динамические списки (с...

ООП
Всем привет! Если можно, не могли бы вы ответить на пару вопросов по ООП, а то что-то не могу...

ооп
Нада книгу по ооп, такую что бы было все разжевано максимально. Так, что бы я за минимум времени и...

ООП
наследование - понятно агрегация - понятно использование - не понятно. что такое...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru