70,037
社区成员
发帖
与我相关
我的任务
分享#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define A 10//行数
#define B 35//列数
int main()
{
double start, finish;
start = clock();//取开始时间
int data[A][B];//用于存放栅格数据
int suit[A][B];//用于存放限制值
int so[A][B];//用于存放影响因子
FILE *fp;//读取栅格数据
fp=fopen("text.txt","r");
if(!fp)
{
printf("不能找到text.TXT!");
return 1;
}
for(int i=0;i<A;i++)
for(int j=0;j<B;j++)
fscanf(fp,"%d",&data[i][j]);
fclose(fp);
FILE *fp2;//读取限制条件
fp2=fopen("1.txt","r");
if(!fp2)
{
printf("不能找到1.TXT!");
return 1;
}
for(int i=0;i<A;i++)
for(int j=0;j<B;j++)
fscanf(fp2,"%d",&suit[i][j]);
fclose(fp2);
FILE *fp3;//读取影响因子
fp3=fopen("2.txt","r");
if(!fp3)
{
printf("不能找到2.TXT!");
return 1;
}
for(int i=0;i<A;i++)
for(int j=0;j<B;j++)
fscanf(fp3,"%d",&so[i][j]);
fclose(fp3);
for(int i=0;i<A;i++)
for(int j=0;j<B;j++)
printf("data[%d][%d]=%d\n",i,j,so[i][j]);
float P[A][B]={0};//定义转换概率二维数组
int near=0;//定义领域内建设用地的数目
//for(int time=1;time<11;time++)//time为迭代次数+1
//{
for(int i=1;i<A-1;i++)//计算P的值
{
for(int j=1;j<B-1;j++)
{
if(data[i][j]==-9999||data[i][j]==1)//判断用地类型,排除数据空值和原本的城镇用地
P[i][j]=0;
else
for(int m=i-1;m<i+2;m++)
{
for(int n=j-1;n<j+2;n++)
{
if(data[m][n]==1)
{
near=near+1;
}
}
}
//float near2=near/8;
//float randdata=1+pow(-log(rand()/(RAND_MAX+1.0)), 2);//随机影响因素
int suitdata=suit[i][j];//限制值
int posdata=so[i][j];//开发概率
P[i][j]=near+suitdata+posdata;
near=0;
printf("P[%d][%d]=%f\n",i,j,P[i][j]);
}
}
finish = clock();//取结束时间
printf( "本次运行消耗%f seconds\n",(finish - start) / CLOCKS_PER_SEC);//以秒为单位显示之
system("pause");
return 0;
}