2017-05-25 49 views
2

我有此代碼示例來查找最大使用天數,它的工作方式與魅力一樣。但我需要得到哪個array index具有最大值。我嘗試了很多方法,但無法提出解決方案。這是我曾嘗試:如何查找具有最大值的多維數組的索引

#include<stdio.h> 
int main(){ 
    float maximumDayUsage=0,minimumDayDayUsage=0; 
    int whichDayHasMaximumUsage; 
    float usage[7][5]={ {1.2, 2.1, 0.8, 0.0, 4.1}, 
         {1.0, 1.3, 4.0, 1.5, 7.8}, 
         {3.2, 1.0, 1.3, 4.0, 9.5}, 
         {1.5, 3.2, 2.3, 0.4, 7.4}, 
         {1.2, 2.1, 0.8, 0.0, 4.1}, 
         {2.6, 2.1, 1.7, 7.0, 13.4}, 
         {1.2, 2.1, 0.8, 0.0, 4.1} }; 
    for(int i=0;i<7;i++){ 
     for(int j=0;j<5;j++){ 
      if(usage[i][j]>maximumDayUsage){ 
       maximumDayUsage=usage[i][j]; 
       whichDayHasMaximumUsage++; 
      }else{ 

      } 
     } 
    } 
    printf("Usage: %.2f\n",maximumDayUsage); 
    printf("Which Day: %d",whichDayHasMaximumUsage); 
    return 0; 
} 
+4

爲什麼要遞增'whichDayHasMaximumUsage'每次都發現一個新的最高值?將索引值'i'和'j'存儲在某處不是更有意義嗎? –

+1

是的,我以爲我錯了。你能告訴我至少有一個提示來存儲那個具有最大值的索引值嗎? –

回答

4

只需保存最大使用量一天ij指標,當你迭代這個數組:

int max_i = 0; 
int max_j = 0; 
float maximumDayUsage = 0; 
for(int i=0;i<7;i++){ 
    for(int j=0;j<5;j++){ 
     if(usage[i][j] > maximumDayUsage) { 
      maximumDayUsage = usage[i][j]; 
      max_i = i; 
      max_j = j; 
     } 
    } 
} 
+0

這個'max_i'和'max_j'如何保存具有最大值的'index'?你能澄清你的答案嗎? –

+1

@ user7980830'max_i'和'max_j'將保留最大值的索引,這與「maximumDayUsage」本身將保留最大值的原因完全相同。這可能是學習如何使用調試器(如GDB)的好時機。瀏覽你的代碼,看看你的程序運行時值是如何變化的。 –

+0

@squeamishossifrage即使我們嘗試使用具有最大值的索引來分配「max_i」和「max_j」的值,如何獲得哪個索引具有最大值? –