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

Структура классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрицы на С++ http://www.cyberforum.ru/cpp-beginners/thread207132.html
ЛР 11. Массивы – Двумерные матрицы Размерность двумерного числового массива задает пользователь. Обращение к двумерному элементу массива, находящемуся в i-той строке и j-том столбце выполняется следующим образом: mas. Массив формировать случайным образом с помощью функции random(). Согласно варианту вычислить матрицу С, которая получается в результате операций с матрицами А, В, D и константой b....
C++ Списки(на С) собственно задача : в списке целых чисел ; между соседними отрицательными вставить 5 ; проблема в поиске матчасти для С , а не для С++, тк прогу надо делать именно на нем) если хотите , то можете и помочь в написании проги;D Добавлено через 1 час 0 минут aaa ... na zavtra nado.... pls help me)) http://www.cyberforum.ru/cpp-beginners/thread207127.html
C++ Перечисление переменных
int startPos = 0, endPos; Вот так записать можно? У меня вроде работает, а если с точки зрения классического "правописания"?
строки, лаб/работа №3 C++
Даны два слова, напечатать только те символы, которые встречаются в обоих словах одновременно. Например, для слов процессор и информация. Ответом должно быть: роц. писать все в одном массиве)
C++ Матрицы на С++ http://www.cyberforum.ru/cpp-beginners/thread206869.html
ЛР 11. Массивы – Двумерные матрицы Размерность двумерного числового массива задает пользователь. Обращение к двумерному элементу массива, находящемуся в i-той строке и j-том столбце выполняется следующим образом: mas. Массив формировать случайным образом с помощью функции random(). Согласно варианту вычислить матрицу С, которая получается в результате операций с матрицами А, В, D и константой b....
C++ Задание Задание Зарплата менеджера составляет 200$ + процент от продаж. продажи до 500$ - 3%, от 500 до 1000 – 5%, свыше 1000 – 8%. Пользователь вводит с клавиатуры уровень продаж для трех менеджеров. Определить их зарплату, определить лучшего менеджера, начислить ему премию 200$, вывести итоги на экран. Помогите сделать код... а то я чтот не доганяю. Нужно делать через таблицу "if" Заранее... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
09.12.2010, 23:01     Структура классов
Вот вам пример. Тут и наследование и ассоциации и то, что вы называете взаимодействием.
Собачка прыгает на дерево, дерево трясется, листья падают.
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
#include <iostream>
#include <iomanip>
#include <time.h>
#include <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
class Leaf
{
public:
    bool is_fallen;
    Leaf() { is_fallen = false; }
};
 
class Branch
{
public:
    vector<Leaf> leaves;
    vector<Branch> branches;
 
    Branch(bool more_branches=true)
    {
        if (more_branches)
            for (int i=0; i<rand()%5; i++)
                branches.push_back(Branch(false));
        for (int i=0; i<rand()%11+10; i++)
            leaves.push_back(Leaf());
    }
 
    int shake()
    {
        int fallen_leaves = 0;
        for (int i=0; i<branches.size(); i++)
            fallen_leaves += branches[i].shake();
        for (int i=0; i<leaves.size(); i++)
            if (rand()%10 == 0)
            {
                leaves[i].is_fallen = true;
                fallen_leaves++;
            }
        return fallen_leaves;
    }
};
 
class Tree
{
public:
    vector<Branch> branches;
    int height;
    string name;
    int shake_branches() 
    {
        cout << name << " is shaking branches." << endl;
        int count = 0;
        for (int i=0; i<branches.size(); i++)
            count += branches[i].shake();
        cout << count << " leaves has fallen." << endl;
        return count;
    }
    Tree(int h=0) 
    { 
        height = h; 
        name="General tree."; 
        for (int i=0; i<rand()%5+10; i++)
            branches.push_back(Branch());
    };
};
 
class Oak : public Tree
{
public:
    Oak(void) { Tree(10); name = "oak"; }
};
 
class Dog
{
public:
    string name;
    vector<Tree> jumped_trees;
    Dog(string n) { name=n; }
    void jump_on(Tree& tree) 
    { 
        jumped_trees.push_back(tree);
        cout << name << " has jumped on " << tree.name << endl;
        tree.shake_branches();
    }
};
 
int main()
{
    srand(static_cast<unsigned int>(time(0)));
 
    Oak oak;
    Dog dog("Sharik");
 
    dog.jump_on(oak);
 
    system("pause");
    return 0;
}
 
Текущее время: 22:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru