Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
yf
0 / 0 / 0
Регистрация: 26.05.2020
Сообщений: 1
1

тупик, не знаю как доделать нормально,подскажите

26.05.2020, 14:07. Показов 1996. Ответов 0

Author24 — интернет-сервис помощи студентам

Задача

Проверка готовности объектов к работе


Фрагмент методического указания.


Создание объектов и построение исходного иерархического дерева объектов.


Система собирается из объектов, принадлежащих определенным классам. В тексте постановки задачи классу соответствует уникальный номер. Относительно номера класса определяются требования (свойства, функциональность).


Первоначальная сборка системы (дерева иерархии объектов, программы) осуществляется исходя из входных данных. Данные вводятся построчно.


Первая строка содержит имя корневого объекта (объект приложение). Номер класса корневого объекта 1. Корневой объект объявляется в основной программе (main). Исходное состояние корневого объекта соответствует его функционированию.


Далее, каждая строка входных данных определяет очередной объект, задает его характеристики и расположение на дереве иерархии. Структура данных в строке:


«Наименование головного объекта» «Наименование очередного объекта» «Номер класса принадлежности очередного объекта» «Номер исходного состояния очередного объекта»


Ввод иерархического дерева завершается, если наименование головного объекта равно «endtree» (в данной строке ввода больше ничего не указывается).





Готовность объекта характеризуется значением его состояния. Значение состояния - целое число. Определены правила для значения состояния:


0 – объект выключен;


Отрицательное – объект включен, но не функционирует, обнаружена неисправность. Значение классифицирует характер неисправности.


Положительное – объект включен, функционирует в штатном режиме. Значение определяет текущее состояние объекта.





Подчиненные объекты располагаются слева на право относительно голоного, согласно их следованию в исходных данных. Исходные данные подготовлены таким образом, что любой головной объект предварительно добавлен в качестве подчиненного. Подразумевается, что все объекты имеют уникальные имена.


Для организации исходя из входных данных создания экземпляров объектов и формирования иерархического дерева, необходимо:


1. В базовом классе реализовать метод поиска объекта на дереве объектов по его наименованию и возврата указателя на него. Если объект не найден, то вернуть нулевой указатель.


2. В корневом объекте (объект приложения) реализовать метод чтения исходных данных, создания объектов и построения исходного дерева иерархии.








Пример


Ввод


app_root
app_root object_1 3 1
app_root object_2 2 1
object_2 object_4 3 -1
object_2 object_5 3 1
app_root object_3 3 1
object_2 object_6 2 1
object_1 object_7 2 1
endtree




Построенное дерево


app_root
object_1
object_7
object_2
object_4
object_5
object_6
object_3




Вывод списка готовности объектов


The object app_root is ready
The object object_1 is ready
The object object_7 is ready
The object object_2 is ready
The object object_4 is not ready
The object object_5 is ready
The object object_6 is ready
The object object_3 is ready







Постановка задачи


Все сложные электронные, технические средства разного назначения в момент включения выполняют опрос готовности к работе составных элементов, индицируя соответствующую информацию на табло, панели или иным образом.
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
int main()
{
    string name1;
    cin >> name1;
    class2* main_name1 = new class2(name1, 0);
    cl_base* par = main_name1;
    cl_base* child = main_name1;
    while (true) {
        string name2, name3;
        int number, num_class;
        cin >> name2 >> name3;
        cin >> num_class >> number;
        if (name2 == name3 || name2=="endtree" || name3=="endtree") {
            break;
        }
        if (child->get_name() == name2) {
            par = child;
 
        }
        child = new class3(name3, par);
        
    }
    cout << main_name1->get_name();
    main_name1->showtree();
    delete main_name1;
    return 0;
}
class cl_base
{
private:
    string n_name;
    cl_base* par1;
    int num_n;
    int state;
    vector < cl_base* > child1 = {};
public:
    cl_base(cl_base* p1_parents) {
        if (this->par1 != 0) {
            this->par1 = p1_parents;
            par1->child1.push_back(this);
        }
    }
    cl_base(string n1_name, cl_base* p1_parents) {
        set_name(n1_name);
        
        if (this->par1 != 0) {
            this->par1 = p1_parents;
            this->par1->child1.push_back(this);
        }
    }
    ~cl_base() {
        for (int i = 0; i < this->child1.size(); i++) {
            delete this->child1[i];
        }
    }
    void set_name(string n1_name) {//задали имя
        this->n_name = n1_name;
    }
    string get_name() {//получили имя 
        return n_name;
    }
    void set_state(int state1) {
        this->state = state1;
    }
    int get_state() {
        return state;
    }
    void showtree() {//вывели названия объектов
        if (this->child1.size() != 0) {
            cout << endl << this->get_name();
            for (int i = 0; i < this->child1.size(); i++) {
                cout << "  " << this->child1[i]->get_name();
            }
            for (int i = 0; i < this->child1.size(); i++) {
 
                child1[i]->showtree();
            }
        }
 
    }
    void set_number(int num) {
        num_n = num;
    }
    int get_number() {
        return num_n;
    }
    void show_o_s() {
        int i_level=0;
        show_s_n(this,i_level);
    }
    void show_s_n(cl_base* p1_par, int level) {
        string sp;
        if (p1_par->get_state() == 1) {
            cout << "The object " << par1->get_name() << " is ready" << endl;
        }
        else {
            cout << "The object " << par1->get_name() << " is not ready" << endl;
        }
        if (par1->child1.size() == 0)return;
        par1->it_child = par1->child1.begin();
        while (par1->it_child != par1->child1.end()) {
            show_obj_n((*(par1->it_child)));
            par1->it_child++;
        }
    }
};
 
class class2 : public cl_base
{
public:
    class2(string n1_name, cl_base* p1_parent) :cl_base(n1_name, p1_parent) {
    }
    
};
class class3 : public cl_base
{
public:
    class3(string n1_name, cl_base* p1_parent) :cl_base(n1_name, p1_parent) {}
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2020, 14:07
Ответы с готовыми решениями:

нужно доделать программу,но не знаю как!
Нужно Изменить программу так, чтобы вместо «обычного» массива был использован именно объект класса...

тупик с расчетом курсовой работы в mathCAd, не знаю с чего начать ....
методом наименьших квадратов определить параметры приближающих функций y1=a1x+b1 и y2=a2 ln x +...

по моему ошибка в типе, не знаю как нормально объяснить ошибку
вот строка A := (Sqr(Xb - Xc) + Sqr(Yb - Yc)); A-тип real xb=65536 xc=20000 yb=0...

Хочу сделать программу через список, но не знаю как доделать (возможно всё неверно)
Напишите программу, которая в последовательности натуральных чисел определяет наименьшее число,...

0
26.05.2020, 14:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2020, 14:07
Помогаю со студенческими работами здесь

Подскажите как доделать
Всем привет, возникла небольшая проблема есть задание: Задание. Создать в Word макрос для...

Подскажите как доделать прогу
Доброго времени суток) Помогите довести до ума программу, чтобы она работала в рамках одной проги...

Застрял.Подскажите как доделать.
Напишите программу на &quot;родном&quot; С++, которая позволит ввести неограниченное количество значений и...

подскажите как доделать программу
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; using namespace std ; main() {...

Подскажите как доделать программу
Создала программу Создание теста по информатике: unit Pr7; interface uses Windows,...

Пожалуйста подскажите как доделать программу
Розробити програму на мові асемблер з лінійною структурою. z=(x+y)/(x-y)+10 Помогите пожалуйста у...


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

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