我想要位置,但我得到数组的ncols和nrows

时间:2017-07-28 02:38:24

标签: c multidimensional-array position

我是学生,我正在努力让最后一段代码完成我的任务。这已被问了一百万次,但我找不到适合我的解决方案。我只能在运行此程序时获取要打印的数组的最后位置。我不能使用任何快捷方式(矢量,maxelement()等)。有人可以帮忙吗?

#define inputfile "C:\\C_txt_files\\wind.txt"

int i, j, nrows, ncols;
double wind_max, wind_min, wind_array[12][5], index_minmonth=0, 
       index_minyear=0, index_maxmonth=0, index_maxyear=0;

fscanf(wind, "%d %d", &nrows, &ncols);

/*Find Min and Max, and Compute average for each row. Locate Min and Max*/
wind_min = wind_array[0][0];
wind_max = wind_array[0][0];
for(i=0; i<nrows; i++)
{
for(j=0; j<ncols; j++)
{   
    if(wind_array[i][j]<wind_min)
       wind_min = wind_array[i][j];
       index_minmonth = i;
       index_minyear = j;
    if(wind_array[i][j]>wind_max)
       wind_max = wind_array[i][j];
       index_maxmonth = i;
       index_maxyear = j;      
}
}
index_minmonth += 1;
index_minyear += 1;
index_maxmonth += 1;
index_maxyear += 1;
printf("Minimum speed is %2.0f mph in month %2.0f, year %1.0f.\n", wind_min, 
      index_minmonth, index_minyear);
printf("Maximum speed is %2.0f mph in month %2.0f, year %1.0f.", wind_max, 
      index_maxmonth, index_maxyear);

这是什么打印: 12月,第5年最低时速为5英里/小时。 12月,第5年最高时速为12英里/小时。

2 个答案:

答案 0 :(得分:1)

您必须初始化变量nrowsncols。否则你正在使用垃圾值。

此外,您需要在循环体中{}

否则它每次只更改其值,并且您到达最后一个元素的索引。

*后来OP提到了从文件中读取。因此,从文件本身读取时不需要初始化部分。

答案 1 :(得分:0)

我认为问题在于使用“if”时范围是错误的。