0

以下の私のコードでは、オブジェクトの配列 - tArray があります。
上位 5 つの合計「num シェア」、calctotal、および calcstring 配列を持つ「買い手の名前」を見つけようとしてい
ます。これは、買い手とその合計値を格納するために連携して機能します。

ただし、実行時にコードをステップ実行すると、コードは基本的にループ内の現在の「numshares」よりも小さい値を置き換えています。これは、交換されたばかりのバイヤーが再び現れたとしても、彼の合計が新しく開始され、追加されないことを意味します。これは私が望むことです.

このコードをどのように変更すれば、より大きな値が見つかったときに、より小さな値が配列にプッシュされ、置き換えられないようになりますか?

ありがとう - 私は問題を解決するこの「形式」(割り当て)に縛られているので、機能を達成することが目標であるため、進歩することができます。

したがって、本質的に 2 番目の if ステートメントは、問題が存在する場合です。

 for (int i = 0; i<nTransactions; i++)
{
    //compares with arrays
    for(int j =0; j<sSize; j++)
    {
        if(tArray[i].buyerName == calcString[j])
        {
        calcTotal[j] += tArray[i].numShares;
        break;
        }
        else{
                //checks if shares is great then current total then replaces
                if(tArray[i].numShares > calcTotal[j])
                {
                    calcTotal[j] = tArray[i].numShares;
                    calcString[j] = tArray[i].buyerName;
                    break;
                }
            }
    }
}
return calcString;
}
4

1 に答える 1

0

一度に 1 つのトランザクションだけを見て最大の合計を見つけようとしているようです。最初にすべての購入者の合計を集計する必要があります。次に、最高の 5 つの合計を見つけるのは簡単なことです。

于 2013-03-12T18:55:47.687 に答える