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

ООП

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

Студворк — интернет-сервис помощи студентам
Привет всем, народ дайте какую-нибудь интересную задачку на ООП, (однообразные задачи из учебников достали уже), чтоб она затрагивала как можно больше тем ООП (можно сказать итоговая задача по разделу ООП), и чтоб ее можно было решить на консоли. (Морской бой не предлагать, этот пример разбирал в учебнике). Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2010, 03:02
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 3 минуты
AnTro.Net, Пятнашки попробую написать)
0
 Аватар для AnTro.Net
131 / 127 / 50
Регистрация: 28.04.2010
Сообщений: 928
21.06.2010, 05:17
_Eldar_, ок
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
21.06.2010, 06:59
Бинарное дерево делал? Октодерево? Дерево с ненормированным числом потомков узла?
0
 Аватар для _Eldar_
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
22.06.2010, 07:19  [ТС]
Пятнашки сделал прикольно получилось, только вводить с клавиатуры координаты долго
вот код (принимаю критику):

файл 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
 Аватар для AnTro.Net
131 / 127 / 50
Регистрация: 28.04.2010
Сообщений: 928
22.06.2010, 09:15
20 минут отдал пятнашкам) славная прога)
0
 Аватар для _Eldar_
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
22.06.2010, 09:17  [ТС]
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
Цитата Сообщение от _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
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
22.06.2010, 13:55
Цитата Сообщение от _Eldar_ Посмотреть сообщение
принимаю критику
1. Никогда не смешивай логику работы и пользовательский интерфейс.
2. То что ты читал - не ООП, а механизмы языка для написания программ в стиле ООП.
3. Пятнашки - никакой пример для изучения ООП.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
22.06.2010, 16:24
Цитата Сообщение от _Eldar_ Посмотреть сообщение
вот код (принимаю критику)
И где тут ООП?

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

Добавлено через 20 секунд
Упс... опоздал...
0
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 1
22.06.2010, 16:27
напиши шашки
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
22.06.2010, 16:40
Цитата Сообщение от N@um Посмотреть сообщение
напиши шашки
Там тоже нет ООП
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.06.2010, 22:10
Вот с таким интерфейсом по-моему удобнее играть:
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
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
22.06.2010, 22:17
_Eldar_, могу подкинуть немного другую идею. Попробуй разбить свою программу на две части: игровой движок (который отвечает за внутреннее состояние игры) и ui - пользовательский интерфейс (та часть, которая непосредственно будет взаимодействовать с игроком). В качестве проверки правильности можешь попробовать на один и тот же движок привинтить два разных ui: один консольный, другой графический. На мой взгляд это будет очень полезный опыт
0
 Аватар для _Eldar_
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
23.06.2010, 01:16  [ТС]
rangerx, Коментарии я начал писать (хватило только на первые три строки)
Цитата Сообщение от rangerx Посмотреть сообщение
2) Зачем вообще этому всему быть открытым?
У меня эти элементы находятся в private:
std::vector<int> arr;
int num_X;
int step;
Про магические числа - можно было конечно все сделать через именнованные константы, но не думаю что правилы игры в пятнашки будут меняться.
По поводу векторов - а чем бы воспользовался? А в целом спасибо за критику.
Всем остальным - ну раз пятнашки, шашки не ООП, так предложите такую задачу чтоб была ООП и ее можно было решить в КОНСОЛИ.

Добавлено через 17 минут
Mr.X, Да гораздо удобнее
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
23.06.2010, 01:37
_Eldar_, подойдите к вопросу глобальнее, сделайте к примеру учёт зверюшек в зоопарке... Общий класс - живность с характерным для всех свойством - время жизни. От него подклассы - млекопитающие, птицы, земноводные, рыбы... У каждого свои свойства: у птиц к примеру размах крыльев...
0
 Аватар для _Eldar_
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
23.06.2010, 01:43  [ТС]
easybudda, Хорошо, зоопарк я опишу, а что будет программа выполнять?

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

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

Добавлено через 4 минуты
Цитата Сообщение от _Eldar_ Посмотреть сообщение
добавление и удаление зверей в парк
Ну это само собой, без этого ни одна "база данных" не обходится, вот вычурные поиски и сортировки по ним делать - по-моему интереснее...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.06.2010, 01:50
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru