5

ユーザーが10進数を入力できるリストボックスがあります。5つの数字を入力するとします。

1.1
1.2
1.3
1.4 
1.5

これらの5つの数値のすべてのバリエーションの合計を取得する必要があります。たとえば、then 1.1 and 1.2then 1.1 1.2 1.31.1 1.2 1.3 1.4thenthenの合計。1.2 1.4 1.51.1 1.3 1.5

私は何かを始めましたが、それは一度に1つの番号をスキップするだけですべてのバリエーションを通過します:

List<Double[]> listNumber = new List<double[]>();            
Double[] array;            
for (int i = 0; i < listBox1.Items.Count; i++)
{
    array = new Double[listBox1.Items.Count];                
    for (int k = 0; k < listBox1.Items.Count; k++)
    {
        if (!k.Equals(i))
        {
            array[k] = (Convert.ToDouble(listBox1.Items[k]));                       
        }
    }
    listNumber.Add(array);
}   

私は自分が望む方法を計算する方法を見つける必要があります。

4

4 に答える 4

1

私が自分の電話にいるときの概要:

入力リストとゼロを含む出力リストから始めます。

入力の数値ごとに、現在の入力数値を現在の出力リストの各数値に追加して、double の新しいリストを作成します。次に、このリストを出力リストの最後に連結します。

必要に応じて、各入力数値のゼロと最初のインスタンス、および重複を削除します。

たとえば、1.4 までの入力例の場合:

0
0 1.1
0 1.1 1.2 2.3
0 1.1 1.2 2.3 1.3 2.4 2.5 3.6
0 1.1 1.2 2.3 1.3 2.4 2.5 3.6 1.4 2.5 2.6 3.7 2.7 3.8 3.9 5.0
         1.2 2.3      2.4 2.5 3.6         2.6 3.7 2.7 3.8 3.9 5.0                    
于 2012-12-26T01:17:00.113 に答える
0

私は C# にあまり精通していませんが、やりたいことをもっと簡単に実行できる方法があると確信しています。もちろん、私が何かを見逃していない限り。

List または Array 内のすべての要素に対して for ループを作成し、それ自体をスキップするように指示しないでください。例:

Double[] array = new Double[3];
array[0] = 1,1;
array[1] = 1,2;
array[2] = 1,3;

Double sum = 0;

for ( int i = 0; i < array.Length ; i++ )
{
    for ( int x = 0 ; x < array.Length ; x++ ) {
        if ( array[i] != array[x] )
        {
            sum = array[x] + array[x+1] // or [x-1] depending on the value of x, you should be able to work this out.   
        }
    }
}

この例を調べれば、私の言いたいことが理解できるはずです。もちろん、これは非常に基本的なプロトタイプです。これを拡張して x の値に応じて逆方向にチェックし、複数の「合計」変数を使用して合計を格納します (結果の種類に応じて)。探している。

- これがお役に立てば幸いです、メリー クリスマス。

于 2012-12-26T00:38:42.753 に答える