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

Написать программу, моделирующую процесс распространения инфекционного заболевания

01.02.2021, 12:42. Показов 1774. Ответов 9

Author24 — интернет-сервис помощи студентам
Написать программу, моделирующую процесс распространения инфекционного заболевания на территории размером nхn клеток (задается с клавиатуры), если:
начальная заражена клетка задается с клавиатуры (их количество и положение на рабочем поле)
-в каждый интервал времени инфекционная клетка может с вероятностью 0,5 заражать каждую из соседних здоровых клеток (слева, сверху, справа и слева)
-после пяти единиц времени зараженная клетка не воспринимает инфекцию, а полученный иммунитет сохраняется при следующих четырех единиц времени, после чего клетка становится доступной к инфицированию.
Вывести на экране текущий состояния загрязнения после каждого интервала времени с учетом зараженных, здоровых и тех клеток, которые получили иммунитет.
Для лучшего визуального восприятия результатов эксперимента после каждого вывода использовать очистки экрана консольного окна (system ( "cls").

Добавлено через 58 минут
5 единиц времени зараженная клетка уже болеет (поэтому еще раз не заболевает). Я могу посоветовать здоровые (обычные) клетки маркировать нулем, больные отрицательным числом (свежезараженную -5), и иммунную положительным (только что выздоровевшую +4). Вот из просмотра таких значений у соседей и исходите. Т.е. если у соседа 0, то можно попробовать его заразить. А на каждом цикле времени вы должны менять значения ненулевых клеток (отрицательные увеличивать, положительные уменьшать)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2021, 12:42
Ответы с готовыми решениями:

Организация и управление памятью. Написать программу, моделирующую процесс управления памятью
Ребята пожалуйста, вопрос жизни и смерти. Ну не могу я в ассемблер, пугает он 1. Написать...

Как создать закон распределения? Моделирование распространения вирусного заболевания
Здравствуйте, есть задание по имитационному моделированию. Необходимо смоделировать распространение...

Составить программу, моделирующую процесс вычеркивания людей из круга
Пожалуйста помогите с этими заданиями. Коллекции (10) 2) В кругу стоят N человек, пронумерованных...

Составить программу, моделирующую процесс продажи билетов и формирования поезда
Поезд состоит из спальных, купейных и плацкартных вагонов. В спальном вагоне 24 места, в купейном...

9
264 / 183 / 87
Регистрация: 03.05.2020
Сообщений: 790
01.02.2021, 12:50 2
Цитата Сообщение от Andriyipz Посмотреть сообщение
с вероятностью 0,5 заражать каждую из соседних здоровых
с каждой 0.5, или с случайной из 4х ?
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 616
01.02.2021, 12:52  [ТС] 3
с вероятностью 0,5 заражать каждую из соседних здоровых клеток (слева, сверху, справа и слева)
0
zayats80888
01.02.2021, 13:04
  #4

Не по теме:

Цитата Сообщение от Andriyipz Посмотреть сообщение
Я могу посоветовать
Спасибо, а мы можем что-нибудь посоветовать? Или это ты у нас экзамен принимаешь?

0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 616
01.02.2021, 13:09  [ТС] 5
???
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.02.2021, 13:21 6
Цитата Сообщение от Andriyipz Посмотреть сообщение
???
Ты сам-то хоть что-нибудь сделал по этой задаче, прежде чем советовать? Если да, то покажи, что сделал, а мы уже будем тебе советовать
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 616
01.02.2021, 13:25  [ТС] 7
Не так написал

Добавлено через 1 минуту
Простите не так написал
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.02.2021, 13:30 8
Цитата Сообщение от Andriyipz Посмотреть сообщение
Простите не так написал
Да ничего страшного.
Тем не менее - если ты не пытаешься ничего сделать сам, то тебе только остаётся надеяться, что кто-то уже делал такую задачу и выложит здесь свой код.
Вероятность, конечно есть, но рекомендую начать решать задачу самому, тогда здесь тебе подскажут, что и как нужно делать правильно.
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
01.02.2021, 14:25 9
На, играй.

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
#include <iostream>
#include <vector>
#include <conio.h>
#include <ctime>
 
typedef std::vector<int> vi;
typedef std::vector<vi> vvi;
 
class Automat
{
    vvi matrix;
    static const int ill_dur;
    static const int immun_dur;
    static const int ill_chance;
    
public:
    
    Automat(){}
    Automat(int n)
    {
        init(n);
    }
    ~Automat(){}
    
    void init(int n)
    {
        matrix.resize(n, vi(n, 0)); 
    }
    
    bool check_range(int x, int y)
    {
        if( x >= matrix[0].size() || y >= matrix.size() || x < 0 || y < 0) return false;
        return true;
    }
    
    void show()
    {
        for(auto i : matrix)
        {
            for(auto j : i) std::cout << (j > 0 ? "#" : (j < 0 ? "@" : "_")) << " ";
            std::cout << "\n";  
        }
    }
    
    void infect(vvi& dest, vvi& src, int x, int y, int duration = ill_dur, int chance = ill_chance )
    {
        if(!check_range(x, y)) return;
        if((chance >= rand()%100 + 1) && !src[y][x]) dest[y][x] = duration;
    }
    
    void primary_infect(int x, int y)
    {
        infect(matrix, matrix, x, y, ill_dur, 100);
    }
    
    void proceed()
    {
        vvi buff(matrix);
        
        for(int i = 0; i < matrix.size(); ++i)
        {
            for(int j = 0; j < matrix[i].size(); ++j)
            {
                if(matrix[i][j] > 0)
                {
                    infect(buff, matrix, j, i-1, (ill_dur + 1));
                    infect(buff, matrix, j, i+1, (ill_dur + 1));
                    infect(buff, matrix, j-1, i, (ill_dur + 1));
                    infect(buff, matrix, j+1, i, (ill_dur + 1));
                }
            }
        }
        
        for(auto& i : buff)
            for(auto& j : i)
            {
                if(j == 1) { j = immun_dur; continue; }
                if(j > 0) { --j; continue; }
                if(j < 0) ++j;
            }
            
        matrix = buff;
    }
    
    void run()
    {
        do
        {
            system("cls");
            show();
            proceed();
        } while(getch() != 27);
    }
    
};
 
const int Automat::ill_dur = 5;
const int Automat::immun_dur = -4;
const int Automat::ill_chance = 50;
 
int main()
{
    srand(time(0));
    
    int n = 30;
    //std::cin >> n;
 
    Automat A(n);
    
    A.primary_infect(rand()%n, rand()%n);
    A.primary_infect(rand()%n, rand()%n);
    A.primary_infect(rand()%n, rand()%n);
 
    A.run();
    
    return 0;
}
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 616
08.02.2021, 12:54  [ТС] 10
где это реализовано ?после пяти единиц времени зараженная клетка не воспринимает инфекцию, а полученный иммунитет сохраняется при следующих четырех единиц времени, после чего клетка становится доступной к инфицированию.
0
08.02.2021, 12:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2021, 12:54
Помогаю со студенческими работами здесь

Написать программу моделирующую работу ОС
Написать программу моделирующую работу ОС, управляющей заданиями в пакетном режиме. Во входном...

Написать программу, моделирующую поведение светофора
1. «Светофор». PD0 - «красный свет», PD1 - «желтый свет», PD2 - «зеленый свет». Красный и зеленый...

Написать программу, моделирующую работу сумматора.
ОЧЕНЬ НУЖНА ПОМОЩЬ !!! ЗАРАНЕЕ БЛАГОДАРЮ !!! Сумматор — устройство, преобразующее информационные...

Написать программу,моделирующую работу бухгалтерии:
О каждом работнике известны следующие данные: -ФИО -Должность -Оклад -Количество иждивенцев...

Написать программу, моделирующую деятельность касс
В кассах аэропорта 4 окна. В каждом окне на обслуживание пассажира уходит некоторое...

Написать программу, моделирующую работу бухгалтерии
О каждом работнике известны следующие данные: -ФИО -Должность -Оклад -Количество иждивенцев...


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

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