金狐
Lv 7
金狐 發問時間: 電腦與網際網路程式設計 · 1 0 年前

C++請問如果有兩個最大值我該怎麼表示出來

以下為表格      店1    店2    店3    店4A商品  100   150     80    120B商品  30     50     50     20C商品  50     70    60      80我要把各商品賣的最好的店家給顯示出來但是我發現商品B有兩個店家都賣的不錯但是如果用我以下的程式只能顯示一個而已有哪為高手可幫看媽感恩for(i=0;i<3;i++)    {   max=a[i][0];  k=0;  for(j=1;j<4;j++)  {   if(a[i][j]>=max)   {  max=a[i][j];     k=j;   }  }  printf("商品%d賣的最好的店為店%d\\n",i+1,k+1); } 

2 個解答

評分
  • 1 0 年前
    最佳解答

    你大概參考看看..

    我沒run...不確定結果正不正確..

    開頭宣告

    int k[10],kIndex=0;

    loop部份

    for(i=0;i<3;i++)

    {

    max = -1;

    kIndex = 0;

    for(j=1;j<4;j++)

    {

    if(a[i][j]>max)

    {

    kIndex = 0;

    max=a[i][j];

    k[kIndex++]=j;

    }

    else if(a[i][j]==max)

    {

    k[kIndex++] = j;

    }

    }

    printf("商品%d賣的最好的店為店%d",i+1,k[kIndex--]+1);

    while(kIndex>0)

    {

    printf(", 店%d",i+1,k[kIndex--]+1);

    }

    }

    • Commenter avatar登入以對解答發表意見
  • 1 0 年前

    只提供想法

    因為你只有用一個變數去存最高的商店

    所以結果都只有一個

    用一個flag陣列去設定

    像是

    int flag[4] // 4代表4家商店, 一開始請出使化為0

    然後在

    k=j 這一行 , 改寫為

    flag[j] = 1;

    最後輸出時檢查flag陣列哪幾個為1

    並且再做一次初始化為0的動作就可以了 // 下一個商品的意思

    參考資料: 自己
    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。