Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2020, 17:44   #1
Shepr
Новичок
Джуниор
 
Регистрация: 13.03.2020
Сообщений: 1
По умолчанию Матрица Барьеров, С++

Здравствуйте, заранее извиняюсь за свой глупый вопрос, но иначе никак.
Нам Даны три матрицы: Угрозы-Объекты(М1), Угрозы-Средство Защиты(М2), Средство Защиты-Объекты(М3)
Сама задача очень проста, изначально в М1 показано каким объектам угрожают опасность. При помощи таблицы М2 и М3 мы вычисляем какие угрозы защита смогла нейтролизовать, а какие смогла пропустить.
То есть изначально смотрим, что в М1 угроза угрожает первому объекту. Смотрим в м2 и видим, что первая угроза взаимодействует с Защитой 1,2,4. Дальше смотрим в М3 и видим, что защита 1 нейтрализует угрозу в 1 объекте. Значит в М1 заменяется 1 на 0, так как защита уничтожила угроза, и так далее.То есть на выходе мы должны показать новую таблицу М1, но уже после работы средств защиты, чтобы показать сколько угроз защита пропустила.
проблема в том, что у меня есть код, который сделан по данному примеру, но я не знаю как его изменить, чтобы я мог во время работы программы самостоятельно устанавливать значения.
Код:
#include <iostream>
 
template<size_t m, size_t n> void print_matrix(bool(&mat)[m][n], const char* str)
{
    std::cout << str << std::endl;
    for (size_t i{}; i < m; ++i)
    {
        for (size_t j{}; j < n; ++j)
        {
            std::cout << mat[i][j] << ' ';
        }
        std::cout << std::endl;
    }
}
 
int main()
{
    constexpr size_t threats = 7;
    constexpr size_t objects = 7;
    constexpr size_t defenses = 4;
 
    bool thr_obj[threats][objects]
    {
        1,1,0,1,0,1,0,
        0,1,1,0,0,0,1,
        0,1,1,0,1,1,1,
        1,0,0,0,1,0,0,
        0,1,1,0,1,0,0,
        0,0,0,0,0,1,0,
        1,1,1,0,0,1,1
    };
 
    bool thr_def[threats][defenses]
    {
        1,1,0,1,
        0,0,1,1,
        1,0,0,1,
        1,0,1,0,
        0,1,1,0,
        1,0,1,0,
        0,1,1,1
    };
 
    bool def_obj[defenses][objects]
    {
        1,0,0,0,0,0,0,
        0,1,0,1,0,0,0,
        0,0,1,1,0,0,1,
        0,0,0,0,1,1,1
    };
 
    print_matrix(thr_obj, "before:");
 
    for (size_t i{}; i < threats; ++i)
    {
        for (size_t j{}; j < objects; ++j)
        {
            if (thr_obj[i][j])
            {
                for (size_t k{}; k < defenses; ++k)
                {
                    if (def_obj[k][j] && thr_def[i][k])
                    {
                        thr_obj[i][j] = false;
                        break;
                    }
                }
            }
        }
    }
 
    print_matrix(thr_obj, "after:");
}
Изображения
Тип файла: jpg М1.jpg (76.9 Кб, 6 просмотров)
Тип файла: jpg м2.jpg (89.3 Кб, 6 просмотров)
Тип файла: jpg м3.jpg (72.6 Кб, 6 просмотров)
Тип файла: jpg М4.jpg (78.7 Кб, 6 просмотров)
Shepr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица. Задана матрица X[N,N], где N<=15. В каждом столбце матрицы поменять местами минимальный элемент и элемент главной диагона _Marchel_ Паскаль, Turbo Pascal, PascalABC.NET 5 28.11.2015 16:23
Паскаль. Матрица NxN -> текстовый файл -> Матрица NxN - найти max по диагоналям -> типизированный файл Лунатик13 Помощь студентам 1 20.02.2012 15:54
Сортировка строк матрицы методом прямых вставок с использование барьеров вставок. Паскаль myrakami Помощь студентам 0 23.12.2010 14:31
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11