📄 xibao1.cpp
字号:
#include "stdio.h"
#include <math.h>
#include <stdlib.h>
int eaten(double zb,int rabnum,int foxnum)
{
int eatnum;
if(zb<0.6 && foxnum*4/7<=rabnum)
eatnum = foxnum*4/7;
if(zb>=0.6 && (int)(foxnum*2)/7<=rabnum)
eatnum = (int)(foxnum*2/7);
return eatnum;
}
int rabbreed(double zb,int rabnum)
{
int lrabnum;
if(zb>0.1&&zb<0.2)
{
if(rabnum<2) lrabnum = 0;
else if(rabnum>=2&&rabnum<=700) lrabnum = 3;
else lrabnum = 2;
}
else if(zb<=0.2 && zb<0.5)
{
if(rabnum<2) lrabnum = 0;
else if(rabnum>=2 && rabnum<=700) lrabnum = 4;
else lrabnum = 3;
}
else if(zb<=0.5 && zb<0.8)
{
if(rabnum<2) lrabnum = 0;
else if(rabnum>=2 && rabnum <= 200) lrabnum = 6;
else if(rabnum>=201 && rabnum <=700) lrabnum = 5;
else lrabnum = 4;
}
else if(zb>=0.8 && zb <=1.0)
{
if(rabnum < 2) lrabnum = 0;
else if(rabnum>=2 && rabnum <= 200) lrabnum = 9;
else if(rabnum>=201 && rabnum <=700) lrabnum = 8;
else if(rabnum>=701 &&rabnum <=5000) lrabnum = 7;
else lrabnum = 5;
}
return lrabnum;
}
int foxbreed(int rabnum,int foxnum)
{
int lfoxnum;
if(foxnum < 2) lfoxnum = 0;
else if(foxnum<=2 && foxnum<=10)
{
if(rabnum<foxnum*3.0) lfoxnum = 2;
else if(rabnum>=foxnum * 3.0 && rabnum < 10*foxnum) lfoxnum = 3;
else if(rabnum>=10*foxnum && rabnum < 40*foxnum) lfoxnum = 4;
else if(rabnum >= 40*foxnum) lfoxnum = 5;
}
else if(foxnum>=11 && foxnum<=50)
{
if(rabnum<foxnum*3.0) lfoxnum = 2;
else if(rabnum>=foxnum*3.0 && rabnum<foxnum*40) lfoxnum = 3;
else lfoxnum = 4;
}
else if(foxnum>=51 && foxnum <=100)
{
if(rabnum<foxnum*3.0) lfoxnum = 1;
else if(rabnum>=foxnum*3.0 && rabnum<foxnum*10) lfoxnum = 2;
else lfoxnum = 3;
}
else
{
if(rabnum<foxnum*3.0) lfoxnum = 0;
else if(rabnum>=foxnum * 3.0 && rabnum < 10*foxnum) lfoxnum = 1;
else if(rabnum>=10*foxnum && rabnum < 40*foxnum) lfoxnum = 2;
else if(rabnum >= 40*foxnum) lfoxnum = 3;
}
return lfoxnum;
}
int deadfox(int rabnum,int foxnum)
{
int deadfoxnum;
if(rabnum < (int)(foxnum * 2/7))
deadfoxnum = (int)0.1 * foxnum;
else
deadfoxnum = 0;
return deadfoxnum;
}
void main()
{
int rab[8][8],fox[8][8];
int r[8][8],f[8][8],r1[8][8];
double vege[8][8];
int i,j,d = 0,randrab = 0,randfox = 0;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
rab[i][j] = 100;
fox[i][j] = 2;
vege[i][j] = 1.0;
}
}
while(d <15)
{
d = d + 1;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
//计算兔子的数目
randrab = (int)(abs(rand()) * 0.00001 * rab[i][j]);
//printf("%d ",randrab);
if(d % 63 == 0)
r[i][j] = rab[i][j] - eaten(vege[i][j],rab[i][j],fox[i][j]) - randrab + rabbreed(vege[i][j],rab[i][j]);
else
r[i][j] = rab[i][j] - eaten(vege[i][j],rab[i][j],fox[i][j]) - randrab ;
if(j != 0) r1[i][j-1] = (int)(abs(rand()) * 0.00001 * r[i][j] * 0.2);
if(j != 7) r1[i][j+1] = (int)(abs(rand()) * 0.00001 * r[i][j] * 0.2);
if(i != 0) r1[i-1][j] = (int)(abs(rand()) * 0.00001 * r[i][j] * 0.2);
if(i != 7) r1[i+1][j] = (int)(r[i][j] * 0.2) - r[i][j-1] - r[i][j+1] - r[i-1][j];//需要修改
r[i][j] = (int)(r[i][j] *(1 - 0.2));
//计算狐狸的数目
randfox = (int)(abs(rand()) * 0.00002 * fox[i][j]);
if(d % 180 ==0)
f[i][j] = fox[i][j] + foxbreed(rab[i][j],fox[i][j]) - deadfox(rab[i][j],fox[i][j]) - randfox; //- 饿死和自然死亡的;
else
f[i][j] = fox[i][j] - deadfox(rab[i][j],fox[i][j]) - randfox; //- 饿死和自然死亡的;
//for(k = 0;k < fox[i][j];k++)
//计算植被
vege[i][j] = 0.11 * vege[i][j] -0.001 * rab[i][j];
}
}
for(i = 0;i < 8;i++)
{
for(j = 0;j <8;j++)
{
rab[i][j] = r[i][j] + r1[i][j];
fox[i][j] = f[i][j];
//printf("%d ",rab[i][j]);
}
}
}
for(i = 0;i < 8;i++)
{
for(j = 0;j <8;j++)
printf("%d ",rab[i][j]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -