Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140

Определить минимальный по сумме уплаченных взяток допустимый порядок получения подписей

20.09.2023, 22:46. Показов 4945. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ломаю голову и не пойму как написать программу вот такого условия: Есть министерство из N чиновников, где N натуральное число. У каждого из чиновников могут быть как подчиненные, так и начальники, причем справедливы правила: подчиненные моего подчиненного мои подчиненные, начальники моего начальника - мои начальники, мой начальник не есть мой подчиненный, у каждого чиновника не более одного непосредственного начальника.
Для того чтобы получить лицензию на вывоз меди необходимо получить подпись 1-ого чиновника - начальника всех чиновников. Проблема осложняется тем, что каждый чиновник, вообще говоря, может потребовать "визы", т.е. подписи некоторых своих непосредственных подчиненных и взятку - известное количество долларов. Для каждого чиновника известен непустой список возможных наборов "виз" и соответствующая каждому набору взятка. Пустой набор означает, что данный чиновник не требует виз в данном случае. Чиновник ставит свою подпись лишь после того, как ему представлены все подписи одного из наборов "виз" и уплачена соответствующая взятка.
Необходимо определить и вывести минимальный по сумме уплаченных взяток допустимый порядок получения подписей для лицензии и стоимость.

Может кто-нибудь сможет подсказать, может у кого есть идея.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2023, 22:46
Ответы с готовыми решениями:

Необходимо определить и вывести минимальный по сумме уплаченных взяток допустимый порядок получения подписей для лицензии и стоимость.
Добрый день. Задали такое задание: Есть министерство из N чиновников, где N натуральное число. У каждого из чиновников могут быть как...

Определить порядок получения подписей минимизирующий сумму уплаченных взяток
Добрый день! Задали такую лабу: Ребят, если не сложно кому, помогите с лабораторной: Есть министерство из N чиновников, где N...

Определить сколько слагаемых будет в сумме, когда слагаемое в сумме 1+1/2+1/3+1/4+..станет меньше данного числа
2. Определить сколько слагаемых будет в сумме, когда слагаемое в сумме 1+1/2+1/3+1/4+..станет меньше введенного вами малого числа.

73
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 15:17  [ТС]
Студворк — интернет-сервис помощи студентам
0
1
2
3
6
4
7
5
6 7
3 4
0
Total amount to pay : 5

Добавлено через 1 минуту
там спрашивает сначала "введите всего чиновников", я не могу 0 ввести
0
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 15:23  [ТС]
в первой строке количество чиновников что вводить, не 0?
3 и 4 строки повторяются
Посмотрите приложенное фото последнее, которое я приложила
Миниатюры
Определить минимальный по сумме уплаченных взяток допустимый порядок получения подписей  
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 15:25
elenaiv0101, но это не данные ввода, это данные вывода, результат,
сама иерархия,
потом порядок получения подписей и общая сумма к оплате.

Вводные данные для этого вывода вот :
Цитата Сообщение от SmallEvil Посмотреть сообщение
Пример ввода (8 чиновников):
Code
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
8
0 5 3
1 2 3 4 5
2
1 4
5
2
3 5
4
2
3 4
1
3 1 1
6
1
6
2 
4 1 1
7
1
7
2
1 0 0
2 0 0
5 0 0
6 0 0
7 0 0
1
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 15:43  [ТС]
Вводила как у Вас, но мне непонятно, почему выходит так и иногда приходится в пустой строке вводить число, а иногда номер чиновника через пробел. Посмотрите скрин (фото)
Миниатюры
Определить минимальный по сумме уплаченных взяток допустимый порядок получения подписей  
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 15:53
Цитата Сообщение от SmallEvil Посмотреть сообщение
4 1 1
7
1
7
2
Это ввод информации о чиновнике с ID 4.
4 (id) 1(количество подчиненных) 1(количество наборов виз)
7 (ID подчиненного)
[дальше вводятся наборы виз]
1(количество виз в наборе)
7(это ID подчиненных, подписи которых требуются для данного набора виз)
2(цена этого набора виз)
[следующий набор виз]
[список наборов виз закончился]

Добавлено через 4 минуты
p.s. Данные ввода никак не валидируются. Это дополнительно море кода.
Так же не контролируются правильность связей.
Всё на совести пользователя.
1
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 16:24  [ТС]
что обозначает chinovniki[pn], vpspisok[iv] и vspisok[ivn], особенно непонятно в квадратных скобках

Добавлено через 11 минут
вот это непонятно, что это выводим: cout << h->chinovnik->pn << endl;
и вот это что :
0
1
2
3
6
4
7
5
6 7
3 4
0

Просто в выводе хотела описать, чтобы понимать, что выводит, как я сделала в вводе
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 16:28
chinovniki[pn] - доступ к чиновнику по его индексу.
vpspisok[iv] - доступ к набору виз по индексу, так как у нас ничего не изменяется, то его (этот индекс) можно использовать как id набора виз. Иначе, в VisaPack пришлось бы добавить еще и visa_id
vspisok[ivn] - доступ к визе по индексу, к счастью ivn как id он нам не нужен.
vspisok можно заменить на list, но я все привел к одному виду

Добавлено через 2 минуты
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
0
1
2
3
6
4
7
5
с отступами, это древовидная иерархия чиновников, цифры, это ID чиновников
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
6 7
3 4
0
Это порядок получения подписей, числа - id чиновников.
Последнее число еще было, 5 - сумма всех оплат всем чиновникам подписи которых необходимо получить..
1
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 16:43  [ТС]
а вот это что вводится: cin >> chinovniki[pn].vpspisok[iv].cena;
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 16:47
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
а вот это что вводится: cin >> chinovniki[pn].vpspisok[iv].cena;
Это и есть цена одного набора виз текущего чиновника.
Другой набор имеет свою цену.
1
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 17:17  [ТС]
Я правильно все расписала при вводе и выводе:
Миниатюры
Определить минимальный по сумме уплаченных взяток допустимый порядок получения подписей  
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 18:15
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
Я правильно все расписала при вводе и выводе:
Мне кажется нет.

Добавлено через 6 минут
Цитата Сообщение от SmallEvil Посмотреть сообщение
8 <количество чиновников>
0 5 3 <id чиновника> <количество подчиненных> <количество наборов виз>
1 2 3 4 5 <id подчиненных>
2 <количество виз первого набора (их три для текущего чиновника)>
1 4 <"визы", id подчиненных подписи которых необходимы>
5 <цена первого набора виз>
2 <количество виз второго набора (их три для текущего чиновника)>
3 5 <"визы", id подчиненных подписи которых необходимы>
4 <цена второго набора виз>
2 <количество виз третьего набора (их три для текущего чиновника)>
3 4 <"визы", id подчиненных подписи которых необходимы>
1 <цена третьего набора виз>
3 1 1 <id чиновника> <количество подчиненных> <количество наборов виз>
6 <id подчиненных>
1 <количество виз первого набора (их три для текущего чиновника)>
6 <"визы", id подчиненных подписи которых необходимы>
2 <цена первого набора виз>
4 1 1 <id чиновника> <количество подчиненных> <количество наборов виз>
7 <id подчиненных>
1 <количество виз первого набора (их три для текущего чиновника)>
7 <"визы", id подчиненных подписи которых необходимы>
2 <цена первого набора виз>
1 0 0 <id чиновника> <количество подчиненных> <количество наборов виз>
2 0 0 <id чиновника> <количество подчиненных> <количество наборов виз>
5 0 0 <id чиновника> <количество подчиненных> <количество наборов виз>
6 0 0 <id чиновника> <количество подчиненных> <количество наборов виз>
7 0 0 <id чиновника> <количество подчиненных> <количество наборов виз>
Вот так.

Добавлено через 4 минуты
Виза - это просто id подчиненного.
Набор виз - список виз.
Каждый набор виз имеет свою цену.
Каждый чиновник может иметь свой список "контрактов" (набор виз + цена)).
Либо я не так понял, либо они не так пишут.
1
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 21:15  [ТС]
Тогда я не пойму, что такое ID чиновника - это номер чиновника или количество виз? И что такое ID подчиненного.

Добавлено через 1 минуту
Тогда я не пойму, что такое ID чиновника - это номер чиновника или количество виз? И что такое ID подчиненного.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 21:28
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
ID чиновника - это номер уникальный идентификатор чиновника
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
И что такое ID подчиненного.
Это ID чиновника, подчиненного данному. Так мы вводим связи между ними.

Добавлено через 4 минуты
Связи можно вводить по разному.
Например так :
Code
1
2
3
4
5
6
7
0 1
0 2
0 3
0 4
0 5
3 6
4 7
Первое число ID чиновника-начальника второе ID чиновника подчиненного.
Этой информации достаточно для построения связей.

Но еще нужно ввести список наборов виз для них.

Добавлено через 2 минуты
У меня не было формата ввода данных.
Я придумал наобум, так же как и код, я не ожидал что вы возьмете его в разработку.
Так как он не подходил по использованию программных средств.
1
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
26.09.2023, 21:35
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
что такое ID чиновника
Порядковый номер чиновника. Чтобы можно было как-то их связывать в структурах данных.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.09.2023, 21:50
Цитата Сообщение от KSergey9 Посмотреть сообщение
Порядковый номер чиновника.
Мне пришлось изменить "Порядковый номер" на ID, ибо я решил нумеровать с нуля, а порядковые номера нумеруются с 1
1
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
26.09.2023, 22:28  [ТС]
Вроде разобралась. Но вопрос один остался, уже поставила
system("pause");
return 0;

а у меня, когда нажимаю на "Локальный отладчик Windows", то окно работы программы уходит на 2 план. как исправить, чтобы оно оставалось на 1 плане, а не за окном программы (на 2 плане). Такого у меня никогда не было. Вот фото
Миниатюры
Определить минимальный по сумме уплаченных взяток допустимый порядок получения подписей  
0
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
27.09.2023, 14:13  [ТС]
А как в этой программе стек и очередь вводить вручную? Потому, что они "вшиты", т. е. работают автоматики, а надо примерно так
СТЕК так
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
#include <iostream>
using namespace std;
 
 
struct Node {
 
    int elem;
    Node* next;
 
    Node(int n) // конструктор
    {
        this->elem = n;
        this->next = nullptr;
    }
};
 
struct Stack {
    Node* head;
    Stack()
    {
        head = nullptr;
    }
 
    ~Stack() // деструктор
    {
        empty();
    }
    void push(int elem) //добавление элемента
    {
        Node* temp = new Node(elem);
        if (!temp) {
            cout << "Переполнение стека" << endl;
            return;
        }
        temp->elem = elem;
        temp->next = head;
        head = temp;
    }
 
    void pop() //удаление элеиента
    {
        Node* temp;
        if (head == NULL)
        {
            cout << "Стек пуст!" << endl;
            return;
        }
        else
        {
            temp = head;
            head = head->next;
            free(temp);
        }
    }
 
    void print()// вывод 
    {
        if (head == nullptr) {
            cout << "Стек пуст!" << endl;
            return;
        }
        else
        {
            Node* temp;
            temp = head;
            while (temp)
            {
                cout << temp->elem << ' ';
                temp = temp->next;
            }
            cout << endl;
        }
    }
 
    void empty() //очистка
    {
        Node* p = head;
        Node* p2;
        while (p != nullptr)
        {
            p2 = p;
            p = p->next;
            delete p2;
        }
        head = nullptr;
    }
     bool is_empty()
    {
        if (head == nullptr)
            return true;
        else 
            return false;
    }
};
А Очередь так
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
#include <iostream>
using namespace std;
 
 
struct Node {
 
    int elem;
    Node* next;
 
    Node(int n) // конструктор
    {
        this->elem = n;
        this->next = nullptr;
    }
};
 
struct FIFO {
    Node* tail, * head;
    FIFO()
    {
        tail = nullptr;
        head = nullptr;
    }
 
    ~FIFO() // деструктор
    {
        empty();
    }
    void push(int elem) //добавление элемента
    {
        Node* temp = new Node(elem);
        if (is_empty())
        {
            head = tail = temp;
        }
        else {
            tail->next = temp;
            tail = temp;
        }
    }
 
    void pop() //удаление элеиента
    {
        if (is_empty())
        {
            cout << "Очередь пуста!" << endl;
            return;
        }
        Node* temp = head;
        temp = temp->next;
        delete head;
        head = temp;
    }
 
    void print()// вывод 
    {
        if (head == nullptr) {
            cout << "Очередь пуста!" << endl;
            return;
        }
        else
        {
            Node* temp;
            temp = head;
            while (temp)
            {
                cout << temp->elem << ' ';
                temp = temp->next;
            }
            cout << endl;
        }
    }
 
    void empty() //очистка
    {
        Node* p = head;
        Node* p2;
        while (p != nullptr)
        {
            p2 = p;
            p = p->next;
            delete p2;
        }
        head = nullptr;
    }
 
    bool is_empty()
    {
        if (head == nullptr)
            return true;
        else
            return false;
    }
};
Как это переделать, может кто знает?

Добавлено через 1 час 8 минут
SmallEvil, не сможете расписать в программе вручную стек/очередь
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
27.09.2023, 14:17
elenaiv0101, ваши стек и очередь не имеют полного функционала.
Нет доступа к элементам.
Плюс тип элемента у них статически заданный.
А в задаче предполагается использование различных элементов стека/очереди.

Что делать :
Создать шаблоны стека и очереди, добавить методы доступа к элементам.
Для стека top(), для очереди front() и back()

Добавлено через 1 минуту
Цитата Сообщение от elenaiv0101 Посмотреть сообщение
не сможете расписать в программе вручную стек/очередь
да, можно использовать свои(ваши) стек и очереди, после их доработки.

Добавлено через 1 минуту
Плюс у ваших контейнеров нарушено правило Трех.
0
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
27.09.2023, 14:29  [ТС]
Можно использовать то что в файлах, если в кодах стека и очереди ошибки, но как ????? В файлах ошибок нет, но я не пойму как это сделать. Мне нужно расписать стек/очередь и списки как в файлах или похоже как в них, но не "автоматически" как в программе. Может подскажите как сделать?
Вложения
Тип файла: pdf Двунаправленный и концевой списки.pdf (353.9 Кб, 0 просмотров)
Тип файла: pdf Стек и Очередь.pdf (712.9 Кб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140
27.09.2023, 14:34  [ТС]
SmallEvil, это сегодня дали и сказали применить при использовании программы, которую вчера разбирали. В файлах преп сказал, что нет ошибок
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2023, 14:34

Определить максимально допустимый ток по медному электропроводу
Определить максимально допустимый ток по медному электропроводу (d = 2 мм, Rl эл = 5,6*10–3 Ом/м), покрытому резиновой изоляцией , если...

Определить допустимый угол закручивания стального вала
Определить допустимый угол закручивания стального вала, с помощью которого передается мощность 5 кВт при частоте вращения 100 об/мин....

на сколько времени хватит денег в случае получения наследства в сумме при указанных расходах
Прошу помощи в решении задачи в VB Собственно вот само условие задачи. Запрашивайте у пользователя размер наследства, которое Вы бы...

В натуральном числе n поменять местами порядок цифр для получения наибольшего числа
Вводится какое-то число n, к примеру, 2473, а программа должна поменять порядок следования цифр таким образом, чтобы получилось...

Минимальный путь для получения максимальной суммы
Суть задачи состоит в том что есть массив допустим 5х5.Нам нужно чтобы программа нашла манимальный путь для того чтобы получить...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru