/* This program determines the locations of peaks in an */
/* grid of elevation data. */
#include <stdio.h>
#include <math.h>
#define N 25
#define FILENAME "grid1.txt"
int main(void)
{
/* Declare variables. */
int nrows, ncols, i, j;
double elevation[N][N], Pcount = 0, Vcount = 0, valley, peak = 0, temp_peak, Peak1Dis;
FILE *grid;
/* Read information from a data file. */
grid = fopen("grid1.txt","r");
if (grid == NULL)
printf("Error opening input file\n");
else
{
fscanf(grid,"%d %d",&nrows,&ncols);
for (i=0; i<=nrows-1; i++)
for (j=0; j<=ncols-1; j++)
fscanf(grid,"%lf",&elevation[i][j]);
/* Determine and print peak locations. */
printf("Top left point defined as row 0, column 0 \n");
printf("Bottom left point(BLF) defined as row 5, column 0 \n\n");
for (i=1; i<=nrows-2; i++)
for (j=1; j<=ncols-2; j++)
if ((elevation[i-1][j]<elevation[i][j]) && (elevation[i+1][j]<elevation[i][j]) && (elevation[i][j-1]<elevation[i][j]) && (elevation[i][j+1]<elevation[i][j]))
{
++Pcount;
printf("Peak at row: %d column: %d \n",i,j);
Peak1Dis = 100* sqrt(((5-i)*(5-i))+(j*j));
printf("Distance from BLP: %.2lf ft\n\n", Peak1Dis);
if (elevation[i][j] > peak)
{
peak = elevation[i][j];
}
}
printf("\nNumber of peaks: %lf\n\n", Pcount);
/* Determine and print valley locations. */
valley = elevation[i][j]; //initializes a variable to check lowest elevation against
for (i=1; i<=nrows-2; i++)
for (j=1; j<=ncols-2; j++)
if ((elevation[i-1][j]>elevation[i][j]) && (elevation[i+1][j]>elevation[i][j]) && (elevation[i][j-1]>elevation[i][j]) && (elevation[i][j+1]>elevation[i][j])
&& (elevation[i-1][j-1]>elevation[i][j]) && (elevation[i-1][j+1]>elevation[i][j]) && (elevation[i+1][j-1]>elevation[i][j]) && (elevation[i+1][j+1]>elevation[i][j]))
{
++Vcount;
printf("Valley at row: %d column: %d \n",i,j);
if (elevation[i][j] < valley)
{
valley = elevation[i][j];
}
}
printf("\nNumber of valleys: %lf\n", Vcount);
printf("\nHighest elevation: %lf\n", peak);
printf("Lowest elevation: %lf\n", valley);
fclose(grid); /* Close file. */
}
return 0; /* Exit program. */
}
No comments:
Post a Comment