Форум по 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.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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