|
06.09.2008, 16:01
|
#1
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Задачка...
В технаре задали задачку по VB... я вообще хз как её решать и делать..... МОжет бть в поможете... очь надо... зарание спс...
.................................................. ............................................
Разработать имитационную модель системы “хищник–жертва” по следующей схеме.
“Остров” размером 20 на 20 заселен дикими кроликами, волками и волчицами. Имеется по нескольку представителей каждого вида. Кролики в каждый момент времени с одинаковой вероятностью 1/9 передвигаются в один из восьми соседних квадратов (за исключением участков, ограниченных береговой линией) или просто сидят неподвижно. Каждый кролик с вероятностью 0,2 превращается в двух кроликов. Каждая волчица передвигается случайным образом, пока в одном из соседних восьми квадратов не окажется кролик, за которым она охотится. Если волчица и кролик оказываются в одном квадрате, волчица съедает кролика и получает одно очко. В противном случае она теряет 0,1 очка.
Волки и волчицы с нулевым количеством очков умирают.
В начальный момент времени все волки и волчицы имеют 1 очко.
Волк ведет себя подобно волчице до тех пор, пока в соседних квадратах не исчезнут все кролики; тогда, если волчица находится в одном из восьми близлежащих квадратов, волк гонится за ней.
Если волк и волчица окажутся в одном квадрате и там нет кролика, которого нужно съесть, они производят потомство случайного пола.
Задание: понаблюдать за изменением популяции в течение некоторого периода времени. Проследить, как сказываются на эволюции популяций изменения параметров модели.
Перегудов Ф.И., Тарасенко Ф.П. Введение в системный анализ. М.: Высшая школа, 1989
|
(Offline)
|
|
07.09.2008, 15:23
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Задачка...
А решать С использованием ООП или БЕЗ ?
Год создания задачи ацки жжот 8-)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
07.09.2008, 15:54
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Задачка...
Проблема в алгоритме или в ВБ?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
07.09.2008, 21:34
|
#4
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Ответ: Задачка...
Проблема в алгоритме или в ВБ?
|
во всём... я ни алгоритм непонимаю, ни как и что писать...
Хотя полседнее вызывает меньше проблем...
А решать С использованием ООП или БЕЗ ?
|
да побаку как, лиш бы работало хоть как нибудь...
|
(Offline)
|
|
07.09.2008, 23:07
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Задачка...
а где начальные условия?
|
(Offline)
|
|
07.09.2008, 23:09
|
#6
|
Бывалый
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений (для 509 пользователей)
|
Ответ: Задачка...
А ты пиши и не парся, не делай граф части, пусть будет консоль, на которую будут выводитсья куча параметров, и пу се смотрят =)))
__________________
Жизнь как говориться игра- делать игры моя профессия(с)
Программирование, это религия! Её нужно исповедовать.
|
(Offline)
|
|
08.09.2008, 00:04
|
#7
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Задачка...
Atomikc, в таком случае не вижу ничего сложного в реализации задачи.
Остров - четырёхмерный массив 20*20*2*10 где
20 - высота
20 - ширина
2 - параметры жЫвотнава
10 - десять животных могут сидеть в одной клетке
хотя тут явно столько не требуется, можно и до двух сократить
т.е. у каждой клетки 10 животных и у каждого по 2 параметра
1.
0 - пусто
1 - крёлик
2 - волк
3 - волчица
2.
очки
тут мона схитрить
объявить весь массив как интегер
а прибавлять в очкам всё в 10 раз больше (0.1 = 1, 1 = 10) а при выводе уже делить на 10 ибо нехрен из-за одного параметра сразу всё в флоат объявлять.
Ну а поведение - это тож несложно.
Кролик - рандом 1,9
если 1 то идёт на соседнюю незанятую клетку, в ином случае - ничего не делает
или размножается или что ему надо
таким же макаром обрабюатываем волков и волчиц
горф. интерфейс - простейшие квадратики и в каждом рисовать намалёванную в пейнте морду волка, волчицы или крёлика
или просто надпись Волк - 0.3 очков
Задача - на полчаса проганья максимум Даже хз зачем было на форум с таким лезть
З.Ы. С волками понятно - они размножаются только когда в одной клетке две разнополые особи, а каким... способом размножается один-единственный крёлик? Боюсь даже предположить! Воистину в СССР секса не было...
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
Последний раз редактировалось ABTOMAT, 08.09.2008 в 00:11.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.09.2008, 04:05
|
#8
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Задачка...
Алгоритм реализации практически однозначен. Затруднения могут быть вызваны лишь выбором организации обработки\хранения данных, что коррелирует с исходными данными (размером острова и скоростью воспроизведения популяции)
Const PopulationTypeWolf%=1
Const PopulationTypeRabbit%=2
Const Male%=1
Const Female%=0
;=================================
Type T2Dpoint
Field x%,y%
End Type
Function Scalar2Vector(scalar%,vector.T2Dpoint)
Select scalar
Case 1
vector\x=-1
vector\y=1
Case 2
vector\x=0
vector\y=1
Case 3
vector\x=1
vector\y=1
Case 4
vector\x=-1
vector\y=0
Case 5
vector\x=1
vector\y=0
Case 6
vector\x=-1
vector\y=-1
Case 7
vector\x=0
vector\y=-1
Case 8
vector\x=1
vector\y=-1
Default
vector\x=0
vector\y=0
End Select
End Function
Function MovePoint(point.t2dpoint,vector.t2dpoint)
point\x=point\x+vector\x
point\y=point\y+vector\y
End Function
Function StabliPoint(point.t2dpoint,size.t2dpoint)
If point\x>size\x
point\x=size\x
ElseIf point\x<1
point\x=1
EndIf
If point\y>size\y
point\y=size\y
ElseIf point\y<1
point\y=1
EndIf
End Function
Function EqualPoint(a.t2dpoint,b.t2dpoint)
If a\x=b\x And a\y=b\y
Return True
EndIf
Return False
End Function
;=================================
Type TIsland
Field SIZE.T2Dpoint
Field Populations%
End Type
Function CreateIsland.TIsland(x,y)
I.TIsland=New TIsland
I\SIZE=New T2Dpoint
I\SIZE\x=x
I\SIZE\y=y
I\Populations=CreatePivot()
HideEntity I\Populations
Return I
End Function
Function AddAnimal(I.TIsland,HANDLE_,PosNeedSet%,CODE%)
;DebugLog "animal with code "+code
Local PPivot%=0
If CountChildren(I\Populations)
For j=1 To CountChildren(I\Populations)
If EntityName(GetChild(I\Populations,j))=Str(CODE)
PPivot=GetChild(I\Populations,j)
Exit
EndIf
Next
EndIf
;DebugLog "root for population "+PPivot
If PPivot=0
PPivot=CreatePivot(I\Populations)
NameEntity PPivot,Str(CODE)
;DebugLog "new population with code "+code
EndIf
Local Obj=CreatePivot(PPivot)
NameEntity Obj,Str(HANDLE_)
Select CODE
Case PopulationTypeWolf
Local Wolf.TWolf=Object.TWolf(HANDLE_)
Wolf\IslandHandle=Handle(I)
Wolf\PopPiv=Obj
If PosNeedSet
Wolf\Position\X=Rand(1,I\SIZE\x)
Wolf\Position\Y=Rand(1,I\SIZE\y)
EndIf
Case PopulationTypeRabbit
Local Rabbit.TRabbit=Object.TRabbit(HANDLE_)
Rabbit\IslandHandle=Handle(I)
Rabbit\PopPiv=Obj
If PosNeedSet
Rabbit\Position\X=Rand(1,I\SIZE\x)
Rabbit\Position\Y=Rand(1,I\SIZE\y)
EndIf
End Select
End Function
Function GetObjectsInCoord%(coord.t2dpoint,I.TIsland)
Pivot=CreatePivot()
HideEntity Pivot
Local SubPivot
Local Popul%
If CountChildren(I\Populations)
For k=1 To CountChildren(I\Populations)
popul=GetChild(I\Populations,k)
For j=1 To CountChildren(popul)
Select Int(EntityName(popul))
Case PopulationTypeWolf
Local Wolf.TWolf=Object.TWolf(EntityName(GetChild(popul,j)))
If EqualPoint(Wolf\Position,coord)
SubPivot=CreatePivot(Pivot)
NameEntity SubPivot,EntityName(popul)
EntityType SubPivot,Handle(Wolf)
EndIf
Case PopulationTypeRabbit
Local Rabbit.TRabbit=Object.TRabbit(EntityName(GetChild(popul,j)))
If EqualPoint(Rabbit\Position,coord)
SubPivot=CreatePivot(Pivot)
NameEntity SubPivot,EntityName(popul)
EntityType SubPivot,Handle(Rabbit)
EndIf
End Select
Next
Next
EndIf
Return Pivot
End Function
Function UpdateIsland(I.TIsland)
If CountChildren(I\Populations)
For k=1 To CountChildren(I\Populations)
popul=GetChild(I\Populations,k)
For j=1 To CountChildren(popul)
Select Int(EntityName(popul))
Case PopulationTypeWolf
Local Wolf.TWolf=Object.TWolf(EntityName(GetChild(popul,j)))
UpdateWolf(Wolf)
Case PopulationTypeRabbit
Local Rabbit.TRabbit=Object.TRabbit(EntityName(GetChild(popul,j)))
UpdateRabbit(Rabbit)
End Select
Next
Next
EndIf
End Function
Function DrawIsland(I.TIsland,x%,y%)
Local MapCellSize%=25
Color 0,200,0
For ix=1 To I\SIZE\x
For iy=1 To I\SIZE\y
Rect x+(ix-1)*MapCellSize+1,y+(iy-1)*MapCellSize+1,MapCellSize-2,MapCellSize-2
Next
Next
If CountChildren(I\Populations)
For k=1 To CountChildren(I\Populations)
popul=GetChild(I\Populations,k)
For j=1 To CountChildren(popul)
Select Int(EntityName(popul))
Case PopulationTypeWolf
Local Wolf.TWolf=Object.TWolf(EntityName(GetChild(popul,j)))
DrawWolf(Wolf,x,y,MapCellSize)
Case PopulationTypeRabbit
Local Rabbit.TRabbit=Object.TRabbit(EntityName(GetChild(popul,j)))
DrawRabbit(Rabbit,x,y,MapCellSize)
End Select
Next
Next
EndIf
End Function
;=================================
Type TWolf
Field Gendor%
Field Score#
Field Position.T2Dpoint
Field IslandHandle%
Field PopPiv%
End Type
Function CreateWolf.TWolf(Gendor%)
W.TWolf=New TWolf
W\GENDOR=Gendor
W\SCORE=1
W\Position=New T2Dpoint
Return W
End Function
Function UpdateWolf(W.Twolf)
Local ISL.TIsland=Object.TIsland(W\IslandHandle)
Local Move.T2Dpoint=New T2Dpoint
Scalar2Vector(Rand(0,9),Move)
MovePoint(W\Position,Move)
StabliPoint(W\Position,ISL\SIZE)
Delete MOVE
Local List=GetObjectsInCoord(W\position,ISL)
Local hav4eg=False
Local Wolf.TWolf=Null
If CountChildren(List)
For i=1 To CountChildren(List)
Select Int(EntityName(GetChild(List,i)))
Case PopulationTypeWolf
If GetEntityType(GetChild(List,i))<>Handle(W)
If W\GENDOR=Male
Wolf.TWolf=Object.TWolf(GetEntityType(GetChild(List,i)))
If Wolf\GENDOR<>Female
Wolf=Null
EndIf
EndIf
EndIf
Case PopulationTypeRabbit
Local Rabbit.TRabbit=Object.TRabbit(GetEntityType(GetChild(List,i)))
FreeEntity Rabbit\PopPiv
Delete Rabbit
W\SCORE=W\SCORE+1
hav4eg=True
Exit
End Select
Next
EndIf
FreeEntity List
If Not hav4eg
W\SCORE=W\SCORE-0.1
If Wolf<>Null
Local gendor=Rand(0,1)
Local ChildWolf.TWolf=CreateWolf(gendor)
ChildWolf\Position\X=Wolf\Position\X
ChildWolf\Position\Y=Wolf\Position\Y
AddAnimal(ISL,Handle(ChildWolf),False,PopulationTypeWolf)
EndIf
EndIf
If W\SCORE=0
FreeEntity W\PopPiv
Delete W
EndIf
End Function
Function DrawWolf(W.TWolf,x,y,mcs)
Color 0,0,0
Local ix=W\Position\x
Local iy=W\Position\y
Oval x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,mcs-2,mcs-2
Color 255,255,255
Select W\gendor
Case male
Text x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,"M"
Case female
Text x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,"}|{"
End Select
End Function
;=================================
Type TRabbit
Field Position.T2Dpoint
Field IslandHandle%
Field PopPiv%
End Type
Function CreateRabbit.TRabbit()
R.TRabbit=New TRabbit
R\Position=New T2Dpoint
Return R
End Function
Function UpdateRabbit(R.TRabbit)
Local ISL.TIsland=Object.TIsland(R\IslandHandle)
Local Move.T2Dpoint=New T2Dpoint
Scalar2Vector(Rand(0,9),Move)
MovePoint(R\Position,Move)
StabliPoint(R\Position,ISL\SIZE)
Delete MOVE
If Rnd(0,1)<=RabbitProb
Local ChildRabbit.TRabbit=CreateRabbit()
ChildRabbit\Position\X=R\Position\X
ChildRabbit\Position\Y=R\Position\Y
AddAnimal(ISL,Handle(ChildRabbit),False,PopulationTypeRabbit)
EndIf
End Function
Function DrawRabbit(R.TRabbit,x,y,mcs)
Color 100,100,100
Local ix=R\Position\x
Local iy=R\Position\y
Oval x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,mcs-2,mcs-2
End Function
;=================================
;=================================
Const TimeMoment=1000;ms
Const RabbitProb#=0.2
Graphics3D 800,600,32
SetBuffer BackBuffer()
SetFont(LoadFont("Arial cyr",20))
SeedRnd(MilliSecs())
Island.TIsland=CreateIsland(20,20)
For i=1 To 1
Rabbit.TRabbit=CreateRabbit()
AddAnimal(Island,Handle(Rabbit),True,PopulationTypeRabbit)
Next
For i=1 To 10
Wolf.TWolf=CreateWolf(Male)
AddAnimal(Island,Handle(Wolf),True,PopulationTypeWolf)
Next
For i=1 To 10
Wolf.TWolf=CreateWolf(Female)
AddAnimal(Island,Handle(Wolf),True,PopulationTypeWolf)
Next
Local time=MilliSecs()
While Not KeyHit(1)
DrawIsland(Island,5,5)
If MilliSecs()-time>=TimeMoment
time=MilliSecs()
UpdateIsland(Island)
EndIf
Flip
Wend
End
Занятно, уонечно:
то кролики делают, сами знаете что, как кролики,
то группа волчиц, забитая случайность в угол, становится интерсной целью для самцов..
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.09.2008, 19:23
|
#9
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Ответ: Задачка...
спс громенное.... прям выручили... спс
|
(Offline)
|
|
19.09.2008, 23:28
|
#10
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Задачка...
Вариант на VB6.0
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.11.2009, 19:45
|
#11
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Задачка...
Сообщение от SBJoker
Вариант на VB6.0
|
Совет: сделайте ограничения постоянный Overflov. А вообще прога прикольная.
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Задача по ТВ |
impersonalis |
Математика |
7 |
30.12.2008 22:12 |
2 задачки |
mudriy |
Загадки |
14 |
26.11.2007 11:55 |
Задачка |
Magus |
Болтовня |
19 |
16.05.2007 20:43 |
Задачка!!! |
Halk-DS |
2D-программирование |
60 |
29.01.2007 00:06 |
Задача |
SubZer0 |
Загадки |
8 |
30.07.2006 16:33 |
Часовой пояс GMT +4, время: 07:26.
|