- Промоделировать процесс распространения инфекции
- Решение
- Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n × n
- Задача об инфекции стригущего лишая — Lisp
- Код к задаче: «Задача об инфекции стригущего лишая»
- Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n × n — Java SE — Ответ 3974105
Промоделировать процесс распространения инфекции
Помогите пожалуйста написать программу на языке Java.
Задание: Промоделировать процесс распространения инфекции — стригущего лишая по участку кожи размером nxn(n-нечетное) клеток. Предполагается, что исходной зараженной клеткой кожи является центральная. В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции, возникший иммунитет действует в течении последующих четырех единиц времени, а затем клетка оказывается здоровой. В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени, отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.
Из кода есть программа написанная на другом языке
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
#include #include int main() { printf("input size of field: "); int n; scanf("%d", &n); int** a = new int*[n]; // поле: 0 - клетка не заражена, -k - заражена k ходов, +k - иммунитет k ходов int** b = new int*[n]; for (int i = 0; i n; i++) { a[i] = new int[n]; b[i] = new int[n]; for (int j = 0; j n; j++) a[i][j] = 0; } a[n/2][n/2] = -1; for (int time = 1; true; time++) { printf("\ntime = %d\n", time); for (int i = 0; i n; i++) { for (int j = 0; j n; ++j) printf("%c", a[i][j] 0 ? '*' : (a[i][j] == 0 ? '.' : '#')); printf("\n"); } printf("continue(y/n)? "); char ch; scanf(" %c", &ch); if (!(ch == 'y' || ch == 'Y')) break; for (int i = 0; i n; i++) { for (int j = 0; j n; j++) { if (a[i][j] == -6) b[i][j] = 1; // клетка стала невосприимчивой else if (a[i][j] 0) b[i][j] = a[i][j]-1; else if (a[i][j] == 4) b[i][j] = 0; // клетка перестала быть невосприимчивой else if (a[i][j] > 0) b[i][j] = a[i][j]+1; else { // здоровая клетка заражается от соседних b[i][j] = 0; if (i-1 >= 0 && a[i-1][j] 0 && rand()*2 > RAND_MAX) b[i][j] = -1; if (i+1 n && a[i+1][j] 0 && rand()*2 > RAND_MAX) b[i][j] = -1; if (j-1 >= 0 && a[i][j-1] 0 && rand()*2 > RAND_MAX) b[i][j] = -1; if (j+1 n && a[i][j+1] 0 && rand()*2 > RAND_MAX) b[i][j] = -1; } } } int** tmp = a; a = b; b = tmp; } for (int i = 0; i n; i++) { delete[] a[i]; delete[] b[i]; } delete[] a; delete[] b; return 0; }
Промоделировать переходный процесс на выходе заданного корректирующего устройства
Задание прикрепил. Знаю, что решать нужно через диффуры, но как — не знаю. Спасибо тому, кто.
Распространение инфекции
По мотивам темы "Задача об инфекции стригущего лишая". const n = 21, cont = 50, ill = 6, imm = 4.
Задача об инфекции стригущего лишая
Помогите разработать архитектуру программы для решения такой задачи: Промоделировать процесс.
Задача об инфекции стригущего лишая
Прошу помочь составить код Суть задачи: Промоделируйте процесс распространения инфекции стригущего.
Задача очень сильно напоминает эту Wikipedia
Думаю, при особом желании можно его под себя переделать
Сообщение было отмечено solovievl как решение
Решение
Спасибо за подсказку, но честно говоря не сильно похожа.
Добавлено через 15 часов 15 минут
Есть еще код
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
class lishai { private int n = 7, //размер области Cont = 50, //заразность в процентах Ill = 6, //время болезни Imm = 4; //иммунитет private int [][]pole; // поле с клетками public lishai(int[][]a){//конструктор поля клеток, с заданными ячейками pole=a; } public lishai zaragenie()//процесс заражения, иммунитета { lishai new_pole= new lishai(pole);//создаем модель в следующий моент времени for (int i = 0; i n; i++) { for (int j = 0; j n; j++) { if(pole[i][j]0)//если сейчас клетка заражена, то может заразить с вероятностью 50% соседнюю клетку { if(i>1&&pole[i-1][j]==0&&Math.random() * 100>=Cont)new_pole.pole[i-1][j]=-1;//клетка слева if(j>1&&pole[i][j-1]==0&&Math.random() * 100>=Cont)new_pole.pole[i][j-1]=-1;//клетка снизу if(in-1&&pole[i+1][j]==0&&Math.random() * 100>=Cont)new_pole.pole[i+1][j]=-1;//клетка справа if(jn-1&&pole[i][j+1]==0&&Math.random() * 100>=Cont)new_pole.pole[i][j+1]=-1;//клетка сверху } if(pole[i][j]==-Ill)//если время болезни =6 new_pole.pole[i][j]=Imm;//то клетка получает иммунитет на 4 хода if(pole[i][j]!=0)new_pole.pole[i][j]=pole[i][j]-1;//если клетка не здорова, то вычитаем из значени 1,моделируем время } } return new_pole;//возвращаем новое поле } public void model() { for (int i = 0; i 10; i++)//цикл кол-ва моделяций поля { System.out.println("цикл времени: "+ i);//номер цикла zaragenie().print();//поле в этот момент времени System.out.println(); } } public void print()//выводим все клетки { for(int i=0;in;i++) { for(int j=0;jn;j++) { if(pole[i][j]==0)System.out.print(" ");//здоровая else if(pole[i][j]>0)System.out.print("#");//имунитет else System.out.print("+");//зараженная } System.out.println(); } } } public class Genia { public static void main(String[] args) { int n = 7, //размер области Cont = 50, //заразность в процентах Ill = 6, //время болезни Imm = 4; //иммунитет int[][] a = new int[n][n];//создаем массив заполненный 0 a[n/2][n/2]=-1;//по заданию средний элемент-зараженный,приравниваем к -1 lishai mod=new lishai(a);//создаем новую модель стригущего лишая mod.print();//выводим в начальный момент времени mod.model();//моделируем } }
Есть вот такой код этой программы, но нужно сделать поле само намного больше.
И как сохранять старые значения, какие там должны быть циклы методы и поля?
То есть меняя в одном массиве во втором тоже меняется, а так не должно быть.
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n × n
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n × n (n — нечетное) клеток. Предполагается, что исходной зараженной клеткой кожи является центральная. В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции, возникший иммунитет действует в течение последующих четырех единиц времени, а затем клетка оказывается здоровой. В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени, отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.
я сам долго ковырял, ковырял так ничего не допер.
тут друг мне скинул исходники примерно того что надо, не могли бы проверить?
и еще возможно ли без графики это сделать? (например сколько нужно шагов чтоб получить полностью здоровую кожу)
Задача об инфекции стригущего лишая
Помогите разработать архитектуру программы для решения такой задачи: Промоделировать процесс.
Задача об инфекции стригущего лишая
Прошу помочь составить код Суть задачи: Промоделируйте процесс распространения инфекции стригущего.
Промоделировать процесс распространения инфекции
Помогите пожалуйста написать программу на языке Java. Задание: Промоделировать процесс.
матрицу A размером n × n .
составьте программу, которая выводит на экран квадратную матрицу A размером n × n . Входные.
Массив размером n × n
Есть двумерный массив размером n × n, элементы которого целые числа. Нужно подсчитать среднее.
Транспонировать матрицу A размером M×N
Нужна помощь. Условие задачи: Все элементы матриц и векторов должны быть в формате float.
Задать матрицу размером m × n
Задано двухмерный массив (матрицу) А размером m × x. Целые числа m и n (в виде констант) и элементы.
Дан массив размером n×n
Дан массив размером n×n, элементы которого целые числа. Подсчитать среднее арифметическое нечетных.
Дана прямоугольная матрица В размером N×M
Дана прямоугольная матрица В размером N×M. Составить программу, которая преобразует матрицу.
Дана действительная матрица размером n×m
Сделайте прогу на си++ пожалуйста сам не могу
Задача об инфекции стригущего лишая — Lisp
Промоделировать процесс распространения инфекции — стригущего лишая по участку кожи размером n x n (n — нечетное) клеток. Предполагается, что исходной зараженной клеткой кожи является центральная. В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции, возникший иммунитет действует в течение последующих четырех единиц времени, а затем клетка оказывается здоровой. В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени, отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.
Собственно решение, как таковое, меня не интересует, я его и сам могу написать. Например, на C/C++/C#. Под архитектурой я понимаю взаимодействие частей программы. Например, если бы я делал программу на объектно-ориентированном языке, то сделал бы объект Клетка, объект Карта и, пожалуй, объект ИтераторКлеток. Как-то так. Я понимаю, что задачу можно решить «в лоб», без всякой архитектуры. Видел уже такие решения. Спасибо, не надо.
Код к задаче: «Задача об инфекции стригущего лишая»
typedef struct Cell < int health; >*Cell; void Cell_Init(Cell this) < this->health = 0; > void Cell_Infect(Cell this) < this->health = 1; > int Cell_IsIll(Cell this) < return this->health > 0 && this->health < 7; >void Cell_PassTime(Cell this) < if( this->health != 0 ) < this->health += 1; if( this->health == 11 ) < this->health = 0; > > > typedef struct Field < struct Cell cells[N+2][M+2]; >*Field; void Field_Init(Field this) < int i, j; for( i = 1; i < N+1; ++i ) < for( j = 1; j < M+1; ++j ) < cells[i][j] = 0; >> >
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n × n — Java SE — Ответ 3974105
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n × n (n — нечетное) клеток. Предполагается, что исходной зараженной клеткой кожи является центральная. В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции, возникший иммунитет действует в течение последующих четырех единиц времени, а затем клетка оказывается здоровой. В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени, отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.
я сам долго ковырял, ковырял так ничего не допер.
тут друг мне скинул исходники примерно того что надо, не могли бы проверить?
и еще возможно ли без графики это сделать? (например сколько нужно шагов чтоб получить полностью здоровую кожу)
Задача об инфекции стригущего лишая
Помогите разработать архитектуру программы для решения такой задачи: Промоделировать процесс.
Задача об инфекции стригущего лишая
Прошу помочь составить код Суть задачи: Промоделируйте процесс распространения инфекции стригущего.
Промоделировать процесс распространения инфекции
Помогите пожалуйста написать программу на языке Java. Задание: Промоделировать процесс.
матрицу A размером n × n .
составьте программу, которая выводит на экран квадратную матрицу A размером n × n . Входные.
Массив размером n × n
Есть двумерный массив размером n × n, элементы которого целые числа. Нужно подсчитать среднее.
Транспонировать матрицу A размером M×N
Нужна помощь. Условие задачи: Все элементы матриц и векторов должны быть в формате float.
Задать матрицу размером m × n
Задано двухмерный массив (матрицу) А размером m × x. Целые числа m и n (в виде констант) и элементы.
Дан массив размером n×n
Дан массив размером n×n, элементы которого целые числа. Подсчитать среднее арифметическое нечетных.
Дана прямоугольная матрица В размером N×M
Дана прямоугольная матрица В размером N×M. Составить программу, которая преобразует матрицу.
Дана действительная матрица размером n×m
Сделайте прогу на си++ пожалуйста сам не могу