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

Задача на разбиение схемы

08.06.2020, 15:59. Показов 619. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#include <iostream>
#include <windows.h>
#include <stdlib.h>
 
using namespace std;
/*ввод схемы*/
void vvod(int n, int m, int** gipgr)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            gipgr[i][j] = 0;
    }
 
    int n1; //количество элементов, соедененных цепью
    int s; //номер элемента, соедененного цепью
    int k; //для проверки повторения введенных элементов
 
    for (int i = 0; i < n; i++)
    {
        cout << "Сколько элементов соединяет цепь? " << i + 1 << endl;
        cin >> n1;
        cout << "Номера каких элементов соединяет цепь? " << endl;
        for (int j = 0; j < n1; j++)
        {
            cin >> s;
            /*запишем единицу в элемент матрицы, соответсвующий i-той строки и s-1 столбца*/
            gipgr[i][s - 1] = 1;
        }
        k = 0;
        for (int j = 0; j < m; j++)
            /*считаем количество элементов, входящих в соеденение с i-той цепью*/
            if (gipgr[i][j] == 1) { k++; }
    }
}
 
/*вывод гиперграфа*/
void vivod(int n, int m, int** gipgr)
{
    cout << "Схема в предствлении гиперграфа" << endl;
    cout << "  ";
    for (int i = 0; i < m; i++)
    {
        cout << i + 1 << " ";
    }
    cout << endl;
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << " ";
        for (int j = 0; j < m; j++)
        {
            cout << gipgr[i][j] << " ";
        }
        cout << endl;
    }
}
 
/*разрезаем схему*/
void razrez(int m, int& k1, int& k2, int& k3, int* r1, int* r2, int* r3)
{
    cout << "Какие элементы входят в первую часть?" << endl;
    for (int i = 0; i < k1; i++)
    {
        cin >> r1[i];
    }
    cout << "Какие элементы входят во 2 часть?" << endl;
    for (int i = 0; i < k2; i++)
    {
        cin >> r2[i];
    }
    cout << "Какие элементы входят в 3 часть?" << endl;
    for (int i = 0; i < k3; i++)
    {
        cin >> r3[i];
    }
 
    /*вывод элементов*/
    cout << "\nПервая часть: (" << k1 << " элем.)" << endl;
    for (int j = 0; j < k1; j++)
        cout << r1[j] << " ";
    
    cout << "\nВторая часть: (" << k2 << " элем.)" << endl;
    for (int j = 0; j < k2; j++)
        cout << r2[j] << " ";
 
    cout << "\nТретья часть: (" << k3 << " элем.)" << endl;
    for (int j = 0; j < k3; j++)
        cout << r3[j] << " ";
    cout << endl;
}
 
bool proverka(int a, int k, int* r)
{
    bool f = false;
    for (int i = 0; i < k; i++)
    {
        if (a == r[i])
        {
            f = true;
        }
    }
    return f;
}
 
/* выводим номера цепей, которые входят в каждую часть целиком*/
 
void num(int n, int m, int** gipgr, int k1, int k2, int k3, int* r1, int* r2, int* r3)
{
    int k = n, kk, kk1, kk2, kk3, max1, max2, max3, max;
    max1 = 0; max2 = 0; max3 = 0; max = 0;
    for (int i = 0; i < n; i++)
    {
        kk1 = 0; kk2 = 0; kk3 = 0; kk = 0;
        for (int j = 0; j < m; j++)
        {
            if (gipgr[i][j] == 1)
            {
                kk++; //количество элементов, принадлежащих i-той цепи
                if (proverka(j + 1, k1, r1))
                    kk1++; //количество элементов первой части, принадлежащих i-той цепи
                if (proverka(j + 1, k2, r2))
                    kk2++; //количество элементов второй части, принадлежащих i-той цепи
                if (proverka(j + 1, k3, r3))
                    kk3++; //количество элементов третьей части, принадлежащих i-той цепи
            }
        }
 
        if ((kk1 == kk) && (1 < kk1) && (k1 != 0)) //проверка: лежит ли i-тая цепь целиком в первой части
        {
            cout << "Цепь " << i + 1 << " целиком лежит в 1 части" << endl; max1++;
        }
        if ((kk2 == kk) && (1 < kk2) && (k2 != 0)) //проверка: лежит ли i-тая цепь целиком во второй части
        {
            cout << "Цепь " << i + 1 << " целиком лежит во 2 части" << endl; max2++;
        }
 
        if ((kk3 == kk) && (1 < kk3) && (k3 != 0)) //проверка: лежит ли i-тая цепь целиком в третьей части
        {
            cout << "Цепь " << i + 1 << " целиком лежит в 3 части" << endl; max3++; 
        }
        
    }
 
    cout << max1 << endl;
    cout << max2 << endl;
    cout << max3 << endl;
 
    if ((max1 > max2) && (max1 > max3)) { cout << "максимальное кол-во цепей в первой части" << endl; }
    else if ((max2 > max1) && (max2 > max3)) { cout << "максимальное кол-во цепей во второй части" << endl; }
    else if ((max3 > max1) && (max3 > max2)) { cout << "максимальное кол-во цепей в третьей части" << endl; }
    else {cout << "Кол-во цепей в частях одинаково" << endl;}
 
}
 
int main()
{
    SetConsoleCP(1251); SetConsoleOutputCP(1251);
    
    cout << "Введите параметры схемы:" << endl;
    cout << "Количество элементов: ";
    int m;
    cin >> m;
    cout << "Количество цепей: ";
    int n;
    cin >> n;
    int** gipgr;
    gipgr = new int* [n];
    for (int i = 0; i < n; i++)
    {
        gipgr[i] = new int[m];
    }
 
    vvod(n, m, gipgr);
    vivod(n, m, gipgr);
    cout << "Разрезаем схему на 3 части" << endl;
    int* r1; //массив, содержащий элементы первой части
    int k1; //количество элементов в первой части
    int* r2; //массив, содержащий элементы второй части
    int k2; //количество элементов во второй части
    int* r3; //массив, содержащий элементы третьей части
    int k3; //количество элементов в третьей части
    
    cout << "Сколько элементов входит в 1 часть?" << endl;
    cin >> k1;
    r1 = new int[k1];
    
    cout << "Сколько элементов входит во 2 часть?" << endl;
    cin >> k2;
    r2 = new int[k2];
 
    cout << "Сколько элементов входят в 3 часть?" << endl;
    k3 = m - k1 - k2;
    cout << k3 << endl;
    r3 = new int[k3];
 
    razrez(m, k1, k2, k3, r1, r2, r3);
    num(n, m, gipgr, k1, k2, k3, r1, r2, r3);
 
    system("pause");
    return 0;
 
}
Условие задачи: Разбить схему на 3 части, напечатать номер части, имеющей максимальное число цепей.
Цепи нужно считать все (и те, что не попали в разрез, и те, что попали).
В коде выше я считаю пока только те, что не попали в разрез. Помогите сделать счет тех цепей, что попали в разрез.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2020, 15:59
Ответы с готовыми решениями:

Разбиение блок-схемы на фрагменты
вот собственно блок-схема: http://rghost.ru/8PRLqs78H Загружайте иллюстрации непосредственно на форум (в расширенном режиме ответа)! ...

Задача на разбиение на пары
Задан массив чисел. Каждое число принадлежит одной из двух групп(массив 0 и 1). Требуется разбить все числа на пары так, чтобы общая...

Задача разбиение на слагаемые
Во входном файле задано число n (2&lt;=n&lt;=40). выведите в выходной файл все разбиения числа n на слагаемые по одному в строке. Слагаемые...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2020, 15:59
Помогаю со студенческими работами здесь

Задача с использованием схемы Бернули
Условие такое: Из ящика с шансом 10% выпадает двустволка. У игрока есть 2 ящика. Каковы шансы найти 0-1-2-3 двустволки в этих ящиках? ...

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

Задача решена в Paskal, а блок схемы нету!
Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств выделить соответственно подмножества М1...

Задача. Изображение графика выходного напряжения для схемы
Не понимаю как решается данная задача, помогите пожалуйста!

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru