2016-04-14 22 views
1
private void button1_Click(object sender, EventArgs e) 
{ 
    int[] m = new int[1000]; 
    int n = textBox1.Lines.Lenght; 
    int i; 
    int k = 0; 
    int sum = 0; 
    int product = 1; 
    int average = 0; 

    for (i = 0; i < n; i++) 
    { 
     try 
     { 
      m[k] = Convert.ToInt32(textBox1.Lines[i]); 
      sum = sum + m[k]; 
      product = product * m[k]; 
      average = sum/n; 
     }  
     catch 
     { 
      MessangeBox.Show("Буквы нельзя!!"); 
      k++; 
     } 
    } 

    label10.Text = n.ToString(); 
    label11.Text = sum.ToString(); 
    label12.Text = product.ToString(); 
    label13.Text = average.ToString();  
} 
+0

あなたの質問は少し不明です。あなたの問題をもっと説明できますか? –

+0

[Max](https://msdn.microsoft.com/en-us/library/system.linq.enumerable.max(v = vs.110).aspx)と[Min](https:// msdn。 microsoft.com/en-us/library/system.linq.enumerable.min(v=vs.110).aspx)を使用して、配列内で最大の番号または最小の番号を検索します。 – Icemanind

答えて

1

次は助けるべきである:

private void button1_Click(object sender, EventArgs e) 
{ 
    int[] m = new int[1000]; 
    int n = textBox1.Lines.Lenght; 
    int i; 
    int k = 0; 
    int sum = 0; 
    int product = 1; 
    int average = 0; 
    int min = Int32.MaxValue; // will hold min value 
    int max = Int32.MinValue; // will hold max value 

    for (i = 0; i < n; i++) 
    { 
     try 
     { 
      m[k] = Convert.ToInt32(textBox1.Lines[i]); 
      sum = sum + m[k]; 
      product = product * m[k]; 
      if (m[k] < min) 
       min = m[k]; 
      if (m[k] > max) 
       max = m[k]; 
     }  
     catch 
     { 
      MessageBox.Show("Буквы нельзя!!"); 
      k++; 
     } 
    } 
    average = sum/n; //Computing average here is more efficient 
    label10.Text = n.ToString(); 
    label11.Text = sum.ToString(); 
    label12.Text = product.ToString(); 
    label13.Text = average.ToString();  
} 

警告を:あなたの配列が空の場合は、デフォルトの最小値と最大値としてInt32.MaxValueをしてInt32.MinValueを持ってしたくない場合があります。あなたはそのケースを別々に扱う必要があります。

+0

これは最も効率的な解決策だと私は思います。 –

+0

ありがとう、それは助けた –

1
using System; 

using System.Collections.Generic; 

using System.Linq; 



int[] m = new int[1000]; 

// fill in the array here ..... 

int min = m.Min(); // find the minimum 

int max = m.Max(); // find the maximum 
+0

なぜ下降票があるのか​​説明してください。彼は配列の最小値と最大値を見つける方法を知りたがっています。 –

+0

私は同意する、それは私が探している答えのようなものです! –

+0

なぜそれがdownvotedされたか分かりません。 upvoteをしてください。 :)しかし、すべての要素を余分に2回ループするのではなく、OPコードの既存のループでmaxとminを計算する方が効率的です。 –

関連する問題