0

テキストボックスから取得したいくつかの数値があり、これらの数値の平均を計算したい:

float t1 = float.Parse(textBox1.Text);
float t2 = float.Parse(textBox2.Text);
float t3 = float.Parse(textBox3.Text);
float t4 = float.Parse(textBox4.Text);
float t5 = float.Parse(textBox5.Text);
float t6 = float.Parse(textBox6.Text);
float t7 = float.Parse(textBox7.Text);
float[] array = { t1,t2,t3,t4,t5,t6,t7};
float final_Score = array.Average(); 

しかし、私はこの計算で参加者をMax評価し、評価したくありません:Min

float final_Score = array.Average()-(array.Max())-(array.Min());

ゼロ以外の数値の平均を取得したいという私の質問ですが、どうすればそれを行うことができますか?

別の質問: textBoxes の色を元に戻したいのですがMaxMinゼロ以外の数値についても同様です。

Controls.OfType<TextBox>().Where(x => x.Text == array.Max().ToString()).FirstOrDefault().BackColor = Color.Red;
Controls.OfType<TextBox>().Where(x => x.Text == array.Min().ToString()).FirstOrDefault().BackColor = Color.Red;
4

1 に答える 1

4

どちらのソリューションでも、次を使用します。

int min = array.Min();
int max = array.Max();

そして、次のいずれか:

float finalScore = array.Except(array.Where(a => a == 0 
                                              || a == min 
                                              || a == max))
                        .Average();

または代わりに:

float finalScore = array.Where(a => a != 0 
                                 && a != min  
                                 && a != max)
                        .Average();

そして最後に、OPがこれで遭遇した問題に答えるために、0と0より大きい最小値をフィルタリングする必要がある場合は、(元のint min行の代わりに)行う必要があります:

int min = array.Where(a => a > 0).Min();
于 2013-08-14T04:24:18.077 に答える