Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/91: Рейтинг темы: голосов - 91, средняя оценка - 4.56
 Аватар для Студентка-007
1 / 1 / 1
Регистрация: 18.01.2016
Сообщений: 10

Задача о рюкзаке

23.12.2017, 16:06. Показов 20171. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Дана задача: Имеются предметы, веса которых равны w1,w2,…,wn, а цены которых равны c1,c2,…,cn. Выбрать из них предметы, суммарный вес которых меньше 20 кг, а стоимость – максимальна.
В результате работы программы должны выводиться предметы: 1, 2, 5.
Помогите разобраться, может что не так с алгоритмом поиска? Программа выводит не подходящие значения.

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
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
const int n = 5;
const int k = 5; // количество предметов
int w[k] = { 10, 4, 3, 12, 5 }; // масса
int p[k] = { 12, 11, 1, 3, 36 }; // стоимость
const int W = 15; // вместимость рюкзака
int s = 5;
int A[k + 1][W + 1];
 
void out() {
    cout << "Все предметы рюкзака. Вес и стоимость: \n";
    for (int i = 0; i < n; i++) {
        cout << i + 1 << ") " << w[i] << " " << p[i] << "\n";
    }
}
 
void knapsack()
{
    for (int n = 0; n <= W; ++n)
        // Заполняем нулевую строчку
        A[0][n] = 0;
    for (int s = 1; s <= k; ++s)       // s - максимальный номер предмета, 
    {                       // который можно использовать
        for (int n = 0; n <= W; ++n)   // n - вместимости рюкзака
        {
            A[s][n] = A[s - 1][n];
            if (n >= w[s] && (A[s - 1][n - w[s]] + p[s] > A[s][n]))
                A[s][n] = A[s - 1][n - w[s]] + p[s];
        }
    }
}
 
void Print(int s, int n) {
    if (A[s][n] == 0) // максимальный рюкзак для параметров (s,n)
        return;        // имеет нулевую ценность, 
                       // поэтому ничего не выводим
    else if (A[s - 1][n] == A[s][n])
        Print(s - 1, n);  // можно составить рюкзак без предмета s
    else
    {
        Print(s - 1, n - w[s]); // Предмет s должен обязательно войти в рюкзак
        cout << s << endl;     
    }
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    out();
    knapsack();
    cout << "Подходящие предметы: " << endl;
    Print(s, n);
    system("pause");
}
Добавлено через 2 минуты
Небольшая поправка
C++
1
const int W = 20; // вместимость рюкзака
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2017, 16:06
Ответы с готовыми решениями:

Задача о рюкзаке
Привет ребята, требуется помощь. Если есть у кого - то выложите пожалуйста код реализации алгоритма задачи о рюкзаке &quot;Задача о...

Задача о рюкзаке на С++
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; struct backPackItem { string name; int cost; int mass;...

Задача о рюкзаке
Условие задачи:имеются m предметов с номерами от 0 до m-1, для каждого из которых известна масса и стоимость. Определить какие предметы...

17
1206 / 775 / 128
Регистрация: 10.03.2012
Сообщений: 4,995
26.03.2018, 22:44
Студентка-007, Удалось исправить задачу?
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
26.03.2018, 23:11
класс постановка задачи, что взять, чтобы "подороже" стырить)

Добавлено через 17 минут
Цитата Сообщение от Студентка-007 Посмотреть сообщение
system("pause");
#include <windows.h>

итератор в функцию "Print()" может стоит добавить?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
26.03.2018, 23:18

Не по теме:

Некропостеры. :)



Добавлено через 4 минуты
perevertysh, stdlib.h (или cstdlib). И она уже подключена в iostream
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
26.03.2018, 23:28
QuakerRUS, у меня ошибка вылетела при компиляции.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
26.03.2018, 23:30
perevertysh, значит, наверное, в вашем компиляторе в iostream не подключается stdlib.h.
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
27.03.2018, 01:20
Студентка-007,

а что если структуру для предметов создать. а то там в Print() двумерный массив без итерации.

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <vector>
 
using namespace std;
 
struct Loot{
 
    int weight;
    int coast;
 
};
 
int main(){
 
    vector<Loot> my_bag;
 
    int n;
 
    cout<<"Your victims are rich? How much Loot them have?"<<endl;
 
    cin>>n;
 
    for (int i=0; i<n; i++){
 
    Loot my_precious;
 
    cin>>my_precious.weight>>my_precious.coast;
 
    my_bag.push_back(my_precious);
 
    }
 
}


Добавлено через 2 минуты
QuakerRUS, более того, у меня codeblocks вылетел стихийно при запуске компиляции)

Добавлено через 38 минут
Студентка-007,
вот пример с сортировкой по стоимости и весу.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <vector>
 
using namespace std;
 
struct Loot{
 
    int weight;
 
    int coast;
 
};
 
int main(){
 
    vector<Loot> my_bag;
 
    vector<Loot> my_bag_with_precious;
 
    int n;
 
    cout<<"Your victims are rich? How much Loot them have?"<<endl;
 
    cin>>n;
 
    for (int i=0; i<n; i++){
 
        Loot my_precious;
 
        cin>>my_precious.weight>>my_precious.coast;
 
        my_bag.push_back(my_precious);
 
    }
 
    cout<<endl;
 
    for(vector<Loot>::iterator it=my_bag.begin(); it!=my_bag.end(); ++it){
 
              cout<<(*it).weight<<" "<<(*it).coast<<endl;
 
    }
 
 
 
    while(my_bag.begin()!=my_bag.end()){
 
        Loot preciousofprecious;
 
        for(vector<Loot>::iterator it=my_bag.begin(); it!=my_bag.end(); ++it){
 
            if   ( ((*it).weight<(*my_bag.begin()).weight) && ((*it).coast>(*my_bag.begin()).coast) ){
 
                    preciousofprecious=*it;
 
                    *it=*my_bag.begin();
 
                    *my_bag.begin()=preciousofprecious;
            }
 
        }
 
        my_bag_with_precious.push_back(*my_bag.begin());
 
        my_bag.erase(my_bag.begin());
 
    }
 
    cout<<endl;
 
    for(vector<Loot>::iterator it=my_bag_with_precious.begin(); it!=my_bag_with_precious.end(); ++it){
 
              cout<<(*it).weight<<" "<<(*it).coast<<endl;
 
    }
 
return 0;
}


Добавлено через 32 минуты
Студентка-007,

Кликните здесь для просмотра всего текста
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>
#include <vector>
 
using namespace std;
 
struct Loot{
 
    int weight;
 
    int coast;
 
};
 
int main(){
 
    vector<Loot> my_bag;
 
    vector<Loot> my_bag_with_precious;
 
    int n;
 
    cout<<"Your victims are rich? How much Loot them have?"<<endl;
 
    cin>>n;
 
    for (int i=0; i<n; i++){
 
        Loot my_precious;
 
        cin>>my_precious.weight>>my_precious.coast;
 
        my_bag.push_back(my_precious);
 
    }
 
    Loot preciousofprecious;
 
    while(my_bag.begin()!=my_bag.end()){
 
        for(vector<Loot>::iterator it=my_bag.begin(); it!=my_bag.end(); ++it){
 
            if   (  (*it).coast>(*my_bag.begin()).coast ){
 
                    preciousofprecious=*it;
 
                    *it=*my_bag.begin();
 
                    *my_bag.begin()=preciousofprecious;
            }
 
        }
 
        my_bag_with_precious.push_back(*my_bag.begin());
 
        my_bag.erase(my_bag.begin());
 
    }
 
    int     max_weight=20,
             sum=0;
 
 
 
    for(vector<Loot>::iterator it=my_bag_with_precious.begin(); it!=my_bag_with_precious.end(); ++it){
 
            sum+=(*it).weight;
 
            if(sum>max_weight){
 
                    sum-=(*it).weight;
                    my_bag_with_precious.push_back(*it);
                    my_bag_with_precious.erase(it);
 
            }else{
 
                    my_bag.push_back(*it);
 
 
            }
    }
 
 
    cout<<endl;
 
    cout<<endl<<"The Most Good Deal with Easy Weight :"<<endl;
 
    for(vector<Loot>::iterator it=my_bag.begin(); it!=my_bag.end(); ++it){
 
              cout<<(*it).weight<<" "<<(*it).coast<<endl;
 
    }
 
return 0;
}
0
 Аватар для Студентка-007
1 / 1 / 1
Регистрация: 18.01.2016
Сообщений: 10
29.03.2018, 08:35  [ТС]
Решила задачу на С#
0
2 / 2 / 1
Регистрация: 27.03.2018
Сообщений: 22
30.03.2018, 09:36
Пусть задача и решена, но вот решение на C++ кому интересно. Пусть не самое изящное (написано на коленке), но понятное с использованием лишь основных функций языка.

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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    const int k = 5; // количество предметов
    const double W = 20; // вместимость рюкзака
    double w[k] = { 10, 4, 3, 12, 5 }; // масса
    double p[k] = { 12, 11, 1, 3, 36 }; // стоимость
    double mass[4][k]; //массив для расчетов
    double weight = 0; //суммарный вес
    double pay = 0; // суммарная стоимость
    for (int i = 0; i<k; i++)  //подсчет коэффициентов и заполнение строк массива
    {
        mass[0][i] = (p[i] / w[i]);
        mass[1][i] = w[i];
        mass[2][i] = p[i];
        mass[3][i] = i + 1;
        
    }
    for (int i = 0; i<k; i++) //распологаем в порядке убывания
    {
        for (int j = 0; j<k; j++)
        {
            double buffer;
            if (mass[0][i] > mass[0][j])
            {
                for (int z = 0; z < 4; z++)
                {
                    buffer = mass[z][i];
                    mass[z][i] = mass[z][j];
                    mass[z][j] = buffer;
                }
                
            }
        }
    }
    cout << "Подходящие предметы: ";
        for (int i = 0; i<k; i++)//выводим
        {
            weight += mass[1][i];
            if (weight <= W)
            {
                cout << mass[3][i] << " ";
                pay += mass[2][i];
            }
            else
            {
                weight -= mass[1][i];
            }
        }
    cout << endl << "Общий вес: " << weight << endl << "Сумма: " << pay << endl << endl;
    system("pause");
}
2
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 8
09.06.2022, 15:11
Много времени уже прошло, но какой метод решения здесь используется?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,537
Записей в блоге: 1
09.06.2022, 16:20
решение Matthevv неверное. Он наивно набрал самых дорогих и маленьких предметов

Добавлено через 9 минут
берём рюкзак на 20 кг и 3 предмета массы m цены p
m10p10, m10p20 и m1p3

из них можно было бы взять первые два и унести стоимость 10+20=30
но автор наивно сортирует предметы по по цене за грамм, так сказать по "плотности цены",
их плотности соответствуют 1, 2, 3 вывод - надо брать последние 2 и унести стоимость 20+3=23


1
 Аватар для igorrr37
2897 / 2044 / 992
Регистрация: 21.12.2010
Сообщений: 3,792
Записей в блоге: 9
09.06.2022, 16:30
взял код вот отсюда и переделал на с++
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
#include <iostream>
#include <algorithm>
#include <vector>
 
std::vector<int> weights{ 4, 1, 3 };// объём каждой вещи
std::vector<int> values{ 4000, 2500, 2000 }; // цена каждой вещи
 
// maxCapacity - объём рюкзака который надо заполнить
int countMax(int maxCapacity)
{
    //строим массив и закладываем место на ячейки пустышки 
    //выходящие из левого верхнего угла
    std::vector<std::vector<int>> arr( weights.size() + 1, std::vector<int>(maxCapacity + 1) );
 
    //проходим по всем вещам
    for (int i = 0; i <= weights.size(); i++)
    {
        //проходим по всем рюкзакам
        for (int j = 0; j <= maxCapacity; j++)
        {
            //попадаем в ячейку пустышку
            if (i == 0 || j == 0)
            {
                arr[i][j] = 0;
            }
            else
            {
                //если вес текущей вещи больше размера рюкзака
                //казалось бы откуда значение возьмется для первой вещи 
                //при таком условии. А оно возьмется из ряда пустышки
                if (weights[i - 1] > j)
                {
                    arr[i, j] = arr[i - 1, j];
                }
                else
                {
                    //здесь по формуле. Значение над текущей ячейкой
                    int prev = arr[i - 1][j];
                    //Значение по вертикали: ряд вверх
                    //и по горизонтали: вес рюкзака - вес текущей вещи
                    int byFormula = values[i - 1] + arr[i - 1][j - weights[i - 1]];
                    arr[i][j] = std::max(prev, byFormula);
                }
            }
        }
    }
 
    // возвращаем правую нижнюю ячейку
    return arr[weights.size()][maxCapacity];
}
 
int main()
{
    std::cout << countMax(4);
}
1
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 8
09.06.2022, 16:57
Интересно, а имеется ли возможность этот код как-то распараллелить? С openMP к примеру, или к этому алгоритму не применимо?
0
736 / 702 / 110
Регистрация: 29.05.2015
Сообщений: 4,293
09.06.2022, 17:13
Разве эта задача имеет аналитическое решение? По моему перебор вариантов, выбираются все варианты, которые в сумме дают вес 20 (полный рюкзак), и выбирается максимальное по стоимости решение.
0
 Аватар для igorrr37
2897 / 2044 / 992
Регистрация: 21.12.2010
Сообщений: 3,792
Записей в блоге: 9
09.06.2022, 18:48
в моём коде выше в строке 33 ошибка: arr[i][j] = arr[i - 1][j];
Цитата Сообщение от zloymarine Посмотреть сообщение
имеется ли возможность этот код как-то распараллелить?
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
#include <iostream>
#include <algorithm>
#include <thread>
#include <vector>
#include <barrier>
 
std::vector<int> weights{ 4, 1, 3 };// объём каждой вещи
std::vector<int> values{ 4000, 2500, 2000 }; // цена каждой вещи
int const backpackCapacity = 7; // объём рюкзака
int const threadCount = 4; // число потоков
std::barrier br{ threadCount };
 
int main()
{
    // таблица вещей по верт. и рюкзаков по гориз.. В каждой ячейке суммарная ценность
    std::vector<std::vector<int>> table(weights.size() + 1, std::vector<int>(backpackCapacity + 1));
    
    std::vector<std::thread> vt;
    int const step = table[0].size() / threadCount;
    int const rem = table[0].size() % threadCount;
    int k = 0, lb = 0, ub = lb + step + rem;
    for (; k < threadCount; ++k)
    {
        vt.emplace_back([lb, ub, &table]()
            {
                //проходим по всем вещам таблицы
                for (int i = 0; i < table.size(); ++i)
                {
                    //проходим по всем рюкзакам таблицы
                    for (int j = lb; j < ub; ++j)
                    {
                        // нулевую строку и нулевой столбец таблицы обнуляем
                        if (i == 0 || j == 0)
                        {
                            table[i][j] = 0;
                        }
                        else
                        {
                            //если вес текущей вещи больше размера рюкзака
                            //казалось бы откуда значение возьмется для первой вещи 
                            //при таком условии. А оно возьмется из ряда пустышки
                            if (weights[i - 1] > j)
                            {
                                table[i][j] = table[i - 1][j];
                            }
                            else
                            {
                                //здесь по формуле. Значение над текущей ячейкой
                                int prev = table[i - 1][j];
                                // цена текущей вещи плюс цена оставшегося объёма рюкзака
                                int byFormula = values[i - 1] + table[i - 1][j - weights[i - 1]];
                                table[i][j] = std::max(prev, byFormula);
                            }
                        }
                    }
                    br.arrive_and_wait();
                }
            });
        lb = ub;
        ub = lb + step;
    }
 
    for (auto& t : vt)
    {
        t.join();
    }
    // возвращаем правую нижнюю ячейку
    std::cout << table[weights.size()][backpackCapacity];
}
1
736 / 702 / 110
Регистрация: 29.05.2015
Сообщений: 4,293
09.06.2022, 20:17
Цитата Сообщение от igorrr37 Посмотреть сообщение
и рюкзаков по гориз.
Рюкзак один???

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

1-й проход - берём по одной вещи и выбираем с максимальной ценой
2-й - по 2 вещи: 1+2, 1+3...2+3, 2+4...3+4 и так далее, и считаем сумму, оставляем максимальную
3-й - по 3 вещи: 1,2+3, 1,2+4..., 2,3+4

Далее аналогично. Во всех циклах break если превышен вес - дальше считать нет смысла. Как то так...
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
09.06.2022, 20:29
Цитата Сообщение от alexu_007 Посмотреть сообщение
Разве эта задача имеет аналитическое решение? По моему перебор вариантов, выбираются все варианты, которые в сумме дают вес 20 (полный рюкзак), и выбирается максимальное по стоимости решение.
Учитывая что похожая классическая задача упаковки рюкзака не имеет аналитического решения, эта задача также скорее всего не имеет аналитического решения. Уверенно не скажу.

К примеру, я не вижу простого и полного критерия чтобы определить что данная набор является оптимальным.
Зато нетрудно сделать критерий локальных максимумов, которые сократят число вариантов.
0
736 / 702 / 110
Регистрация: 29.05.2015
Сообщений: 4,293
09.06.2022, 23:35
Я эта, из википедии код решил проверить, вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Ввод:
// Ценности предметов (загруженные в массив v)
// Веса предметов (загруженные в массив w)
// Количество предметов (n)
// Грузоподъемность (W)
 
for j from 0 to W do:
    m[0, j] := 0
 
for i from 1 to n do:
    for j from 0 to W do:
        if w[i] > j then:
            m[i, j] := m[i-1, j]
        else:
            m[i, j] := max(m[i-1, j], m[i-1, j-w[i]] + v[i])
Код на паскале, я как мог его на си переделал. В вики к сожалению не сказано, где результат брать, поэтому я вывел на экран содержимое всего массива m. где в этом наборе цифр результат?

C++ (Qt)
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
    int w[4] = {5, 10, 6, 5};
    int v[4] = {3, 5, 4, 2};
 
    int m[4][14];
 
    int n = 4;
    int Wt = 14;
 
    for(int i = 0; i < n; i++)
        for(int j = 0; j < Wt; j++)
            m[i][j] = 0;
 
 
    for(int i = 1; i < n; i++)
    {
        for(int j = 0; j < Wt; j++)
        {
            if(v[i] > j) m[i][j] = m[i-1][j];
 
            else
            {
                int x = m[i-1][j];
                int y = m[i-1][j-w[i]] + v[i];
 
                if(x > y) m[i][j] = x;
                else      m[i][j] = y;
            }
        }
    }
 
 
    QString str;
 
    for(int i = 0; i < 4; i++)
    {
        str += "\n";
 
        for(int j = 0; j < 14; j++)
        {
            str += "   " + QString::number(m[i][j]);
        }
    }
 
    ui->textEdit->append(str);
Миниатюры
Задача о рюкзаке  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2022, 23:35
Помогаю со студенческими работами здесь

Задача о рюкзаке 0-1
Дарова. Я снова с вопросом по динамическому программированию. Но т.к я тупенький, то прошу объяснить где я накосячил :) Сама задача - та...

Задача о рюкзаке
Написать решение задачи о рюкзаке. Ёмкость рюкзака 25 кг. 12 предметов. Ценность и вес задать случайно от 1 до 8ю Сформировать...

Задача о Рюкзаке
Очень прошу с помощью. Нужен код на с++, решение задачи о рюкзаке методами : динамического программирования, метод ветвей и границ , жадный...

Задача о рюкзаке
И так я все сделал как вы и просили. Условие задачи о рюкзаке: Итак, пусть у нас есть рюкзак объёма W, и список из n вещей, у каждой...

Задача о рюкзаке
Доброго вечера! Даны n типов предметов, каждый тип обладает своей стоимостью и весом, а также предел грузоподъемности limit. Нужно набрать...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru