2017-07-28 39 views
-2

我是一名學生,我試圖讓我的任務的最後一段代碼工作。這已被問了一百萬次,但我一直無法找到適合我的解決方案。當我運行這個程序時,我只能得到陣列的最後一個位置。我不能使用任何快捷方式(矢量,maxelement()等)。誰能幫忙?我想要的位置,但我得到ncols和陣列

#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); 

這是打印: 最小速度爲5英里每小時12個月,今年5 的最高速度是在本月12日12英里,今年5

+3

你需要'{}'爲if-body。 – BLUEPIXY

+0

fscanf(wind,「%d%d」,&nrows,&ncols);我正在讀取一個文件。我忘記了包含這些代碼。 – drewsefer

+0

「if」語句的縮進與編譯器讀取代碼的方式不匹配。在'if'語句的主體周圍添加大括號。 C是*不是* Python。 –

回答

1

你必須initialiaze變量nrowsncols。否則,你正在處理垃圾值。

你也需要{}在循環體。

否則它只是每次更改其值,並且您到達最後一個元素的索引。

*稍後OP提到關於從文件讀取。所以初始化部分不需要,因爲它從文件本身讀取。

+0

謝謝!那是我錯過的。 – drewsefer

+0

@drewsefer。如果這個答案幫助你選擇我的答案(答案旁邊的正確標記),它將有助於未來的用戶。 – coderredoc

0

我認爲問題在於當你使用「if」時,範圍是錯誤的。