C编写坡度计算出问题
晓枫gis 2012-09-10 04:48:38 //最大坡降计算坡度坡向
#include<stdio.h>
#include<math.h>
#include"mpi.h"
void Slope_max(int** a,int i,int j,float *p1,int *p2,int NODATA_VALUE);
int main(int argc,char**argv){
FILE *fp=fopen("D:\\t.txt","r");
FILE* f1=fopen("D:\\t1.txt","w"); //建立存放坡度计算数据目录
FILE* f2=fopen("D:\\t2.txt","w"); //建立存放坡向计算数据目录
int nrows,ncols;
int NODATA_VALUE;
int cellsize;
int mysize;
int **a;
float *p1=NULL;
int *p2=NULL;
if(fp==NULL)
printf("Cannot open file!");
/*从t.txt文档中读入数据*/
fscanf(fp,"ncols %d\n",&ncols);
fscanf(fp,"nrows %d\n",&nrows);
fscanf(fp,"xllcorner 776458.52709961\nyllcorner 5317389.7575073\ncellsize %d\n",&cellsize);
fscanf(fp,"NODATA_value %d\n",&NODATA_VALUE);
mysize=nrows/2;
/*从t.txt文档中读入高程数据存放在数组a中*/
a=new int*[nrows+2];
for(int i=0;i<ncols+2;i++)a[i]=new int[ncols];
for(int i=0;i<nrows+2;i++)
for(int j=0;j<ncols+2;j++)
a[i][j]=NODATA_VALUE;
for(int i=1;i<nrows+1;i++){ //向a中读入数据
for(int j=1;j<ncols+1;j++)
fscanf(fp,"%d ",&a[i][j]);
fscanf(fp,"\n");
}
for(int i=1;i<nrows+1;i++){
for(int j=1;j<ncols+1;j++){
Slope_max(a,i,j,p1,p2,NODATA_VALUE);
fprintf(f1,"%f ",*p1);
fprintf(f2,"%d ",*p2);
}
fprintf(f1,"\n");
fprintf(f2,"\n");
}
return 0;
}
void Slope_max(int** b,int i,int j,float *p1,int* p2,int NODATA_VALUE){
int dz=0;
int loop1=0,loop2=0;
float Slope;
int Slopedest;
for(int m=i-1;m<i+2;m++)
for(int n=j-1;n<j+2;n++){
if(m==i&&n==j)continue;
if(*(*(b+m)+n)=NODATA_VALUE)continue;
if(dz<abs(*(*(b+i)+j)-*(*(b+m)+n))){
dz=abs(*(*(b+i)+j)-*(*(b+m)+n));
loop1=m;
loop2=n;
}
}
if((loop1==i-1&&loop2==j-1)||(loop1==i+1&&loop2==j-1)
||(loop1==i-1&&j==j+1)||(loop1==i+1&&loop2==j+1))
Slope=atan(dz/(100*sqrt(2.0)));
else Slope=atan((float)dz/100);
Slopedest=(loop1-1)*45;
p1=&Slope;p2=&Slopedest;
}
希望高手大虾们帮我看下问题出在哪里