计算平均海平面变化

时间:2019-12-15 04:01:58

标签: c

这是我要完成的任务。 从http://climate.nasa.gov/vital-signs/sea-level下载海平面数据(链接到外部站点。)。创建一个执行以下操作的程序:

a。告诉用户该程序使用来自NASA的数据来预测2020年至2050年的海平面。

b。将海平面数据存储在数组中。从1993年到今年,您每年仅需要使用一个数据点。每行使用最后一列(已删除年度和半年度信号的全球平均海平面GMSL)。

c。查找数据中指定的所有年份的平均海平面年度变化。 (提示-使用循环将多年来的年度变化存储在数组中,然后使用循环来计算平均年度变化。)

d。假设线性增加并计算2020、2025、2030、2035、2040、2045和2050年的预计海平面上升。将这些结果存储在自己的数组中。 (提示-只需将您在c部分中计算出的平均值用作未来年份的年度变化即可。)

e。为用户显示结果,并确保引用数据文件中指定的数据集,以便用户知道数据来自何处。

示例输出:

预计的全球平均海平面为

2020 64.32

2025 68.98

2030 73.51

2035 78.12

2040 83.43

2045 88.12

2050 93.04

这些预测是使用XXXXXXXXXX提供的数据进行的

这是到目前为止的代码。但是,似乎并没有使用阵列中的所有数据来查找海平面的平均变化。

#include <stdio.h>
#include <stdlib.h>

int main()
{
//creates a file object to read data
FILE* infile = fopen("nasa.txt","r");

//checks if file exists
if(infile == NULL)
{
printf("File does not exist.\n");
return -1;
}

//create 2d array to store years and their sea levels
int level[50][2];
//number of elements in array
int n = 0,i;

char word[5];

//read data from file word by word
while(fscanf(infile, "%s", word) != EOF)
{
if(word != ' ' && word != '\n')
{

//convert string to int and store in array
level[n][0] = atoi(word);

//store sea level
fscanf(infile, "%s", word);
level[n][1] = atoi(word);

//increment n
n++;
}
}

//store avg change
float avg=0;

for(i=1;i<n;i++)
{
//add difference of consecutive elements
avg += level[i][1] - level[i-1][1];
}

//calculate mean
avg = (float)avg/n;

int c = 7; //number of predictions
//array to store results
float predictions[][2] = {{2020,0},{2025,0},{2030,0},{2035,0},
{2040,0},{2045,0},{2050,0}};


//predict future sea levels
for(i=0;i<c;i++)
{
//multiply avg change by number of years
predictions[i][1] = level[n-1][1] +
(predictions[i][0] - level[n-1][0])*avg;
}

//print avg change
printf("Average change in sea level year over year is: %f mm\n",avg);

//print predictions
for(i = 0;i<c;i++)
{
printf("Predicted sea level change since 1993 for the year %.0f: %.2f mm\n",
predictions[i][0],predictions[i][1]);
}
printf("These predictions were made using data provided by the National Aeronautics and Space Administration.");

return 0;
}

海平面变化数据

1993 4

1994 7

1995 11

1996 14

1997 21

1998 20

1999 19

2000 22

2001 27

2002 31

2003 34

2004 36

2005 40

2006 42

2007 43

2008 47

2009 48

2010 54

2011 53

2012 59

2013 65

2014 68

2015 75

2016 83

2017 85

2018 88

2019 94

1 个答案:

答案 0 :(得分:0)

  

但是,似乎并没有使用阵列中的所有数据来查找海平面的平均变化。

avg = (float)avg/n;avg = (float)(level[n-1][1] - level[0][1])/n相同。

只有终点很重要。
累积差异的循环正在抵消年份之间的值。

在年中,如果加+100,则一年的差额将增加+100,而下一年的差额将减少100。差异的总和最终不受该+100的影响。

所有的年中值都可以为0,并且一个平均值为