Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.05.2011, 13:23
r_max r_max вне форума
Прохожий
 
Регистрация: 08.05.2011
Адрес: казахстан
Сообщения: 4
Версия Delphi: 7 enterprise
Репутация: 10
Вопрос Моделирование инфекционного заболевания на Delphi

Смоделировать процесс распространения инфекции — стригущего лишая по участку кожи размером n*n (n — нечетное) клеток. Предполагается, что исходной зараженной клеткой кожи является центральная. В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции. Возникший иммунитет действует в течение последующих четырех единиц времени, а затем клетка оказывается здоровой. В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени отмечая зараженные, невосприимчивые к инфекции и здоровые клетки. Я к сожалению не силен в Delphi, смог реализовать только на Pascal. Теперь пытаюсь разобраться и в Delphi, надеюсь что Ваши советы направят меня по нужному пути!

вот то что у меня получилось в Pascal

Код:
Код:
uses
  CRT;

const
  n= 21;        {размер области}
  Cont= 50;     {заразность в процентах}
  Ill= 6;       {время болезни}
  Imm= 4;       {длительность иммунитета}

var
  a,b: array[1..n,1..n]of integer;
  i,j: integer;
  c: char;


procedure Show;
begin
  for i:=1 to n do begin
    for j:=1 to n do
      if (a[i,j]>0) then Write(' #') else if a[i,j]<0 then Write(' +') else Write('  ');
    WriteLn
  end
end;


begin
  FillChar(a,SizeOf(a),0);
  a[n div 2+1,n div 2+1]:=1;
  Show;
  Randomize;
  repeat
    b:=a;
    for i:=1 to n do begin
      for j:=1 to n do begin
        if a[i,j]>0 then begin
          if (i>1) and (b[i-1,j]=0) and (Random(100)<Cont) then b[i-1,j]:=1;
          if (j>1) and (b[i,j-1]=0) and (Random(100)<Cont) then b[i,j-1]:=1;
          if (i<n) and (b[i+1,j]=0) and (Random(100)<Cont) then b[i+1,j]:=1;
          if (j<n) and (b[i,j+1]=0) and (Random(100)<Cont) then b[i,j+1]:=1;
          Inc(b[i,j]);
          if b[i,j]>Ill then b[i,j]:=-Imm
        end
        else if a[i,j]<0 then Inc(b[i,j])
      end
    end;
    a:=b;
    Show;
    WriteLn;
    c:=ReadKey
  until c=#27
end.

Последний раз редактировалось Aristarh Dark, 08.05.2011 в 14:06.
Ответить с цитированием
  #2  
Старый 08.05.2011, 13:59
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Инфицированная клетка может заразить только одну соседнюю здоровую клетку с вер. 0.5? Или любое кол-во соседних с вер. 0.5?
Ответить с цитированием
  #3  
Старый 08.05.2011, 14:12
r_max r_max вне форума
Прохожий
 
Регистрация: 08.05.2011
Адрес: казахстан
Сообщения: 4
Версия Delphi: 7 enterprise
Репутация: 10
По умолчанию

одну в каждый интервал времени
Ответить с цитированием
  #4  
Старый 08.05.2011, 15:15
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Нажмешь кнопку "Начать"
Вложения
Тип файла: zip Inf.zip (6.0 Кбайт, 36 просмотров)
Ответить с цитированием
  #5  
Старый 08.05.2011, 15:35
r_max r_max вне форума
Прохожий
 
Регистрация: 08.05.2011
Адрес: казахстан
Сообщения: 4
Версия Delphi: 7 enterprise
Репутация: 10
Хорошо

Благодарю! очень помог!!
Ответить с цитированием
  #6  
Старый 09.05.2011, 02:09
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию а вот еще вариант

вспоминаю свое детство. Похоже.

Не гладь бродячих кошек. Тогда и над программой не придется пыхтеть.....
Вложения
Тип файла: zip Infection.zip (213.5 Кбайт, 18 просмотров)
Ответить с цитированием
  #7  
Старый 09.05.2011, 09:38
r_max r_max вне форума
Прохожий
 
Регистрация: 08.05.2011
Адрес: казахстан
Сообщения: 4
Версия Delphi: 7 enterprise
Репутация: 10
По умолчанию

Благодарю и Вас, chainik! но считаю что выбранный Вами способ не дает наглядности

Последний раз редактировалось r_max, 09.05.2011 в 10:37.
Ответить с цитированием
  #8  
Старый 26.10.2011, 22:51
Ника Ника вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 9
Репутация: 10
По умолчанию

помогите пожалуйста написать программу на Delphi!!!!
Есть код на DPSS, а в Delphi я не сильна....
Двухколейная железная дорога имеет между станциями A и B одноколейный участок с разъездом C. На разъезде имеется запасной путь, на котором один состав может пропустить встречный поезд. К станциям A и B поезда прибывают с двухколейных участков каждые минут. Участок пути AC поезда преодолевают за минут, а участок BC за минут. Со станций A и B поезда пропускаются на одноколейный участок до разъезда только при условии, что участок свободен, а на разъезде не стоит состав. После остановки на разъезде поезда пропускаются на участок сразу, после его освобождения. Поезд останавливается на разъезде, если по лежащему впереди него участку пути движется встречный поезд.
Смоделировать работу одноколейного участка железной дороги при условии, что в направлении AB через него должны проследовать 50 составов. Определить среднее время ожидания составов на станциях A и B, а также среднее время ожидания на разъезде C и коэффициент загрузки запасного пути.
Ответить с цитированием
  #9  
Старый 26.10.2011, 22:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Для начала, создай собственную тему - не мусорь в чужих.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 28.10.2011, 09:15
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

между прочим любопытное наблюдение
если уменьшать длительность невосприимчивости (иммунитета) то
возникает следующий эффект
кольцо иммунитета становится более тонким ( у меня это кольцо желтого цвета)
в результате некоторые зараженные клетки проскакивают внутрь кольца
и оказываются в области где находятся клетки уже переболевшие и успевшие потерять иммунитет.
В результате происходит вторичное заражение!
Процесс развивается бесконечно!
(не знаю насколько эта модель близка к реальности)

В общем любопытная игрушка получилась....
Ответить с цитированием
  #11  
Старый 28.10.2011, 10:09
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Дык лишай реально трудно излечим. Вероятно из-за случаев вторичного заражения.
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025