2016-05-09 52 views
1

Sum、Average、Minを計算するプログラムを作成しました。& Maxをインクルード関数またはメソッドなしで計算しました。私は多くのテクニックを見つけ、下のものにロックしました。 しかし問題は、通常の方法でやっている間です。結果が来た。 Windowsフォームに転送中に、出力を取得できません。常にエラーを投げます。Cのインビルド関数またはメソッドを使用しないで平均最小最小値を計算する

private void button1_Click(object sender, EventArgs e) 
{ 
int n = int.Parse(textBox7.Text); 
int[] numbers = new int[n]; 
int sum = 0; 
float average; 

for(int i=0; i<n; i++) 
{ 
numbers[i] = int.Parse(textBox1.Text); 
} 
Array.Sort(numbers); 

for(int i=0; i<n; i++) 
{ 
sum += numbers[i]; 
} 

average = ((float)sum/n); 

textBox4.Text = numbers[0].ToString(); 
textBox5.Text = numbers[-1].ToString(); 
textBox2.Text = sum.ToString(); 
textBox3.Text = average.ToString(); 
} 

出力は

sum : 45 
avg : 15 
min : 8 
max : 10 
+1

が考えるを持っているものあなたの質問から省略された明らかで重要な情報です。 –

+0

あなたのコードにはどんなエラーがスローされますか?それはOutOfRange例外に関連していますか? – sumngh

答えて

1

、のようにする必要があります私は、あなたのコードに問題はここにあると思う:

textBox5.Text = numbers[-1].ToString(); 

あなたの配列持つ-1インデックスにエントリは存在しません。

あなたはtextBox5で最大値を表示したい場合は、あなたがそのように実行する必要があります。

textBox5.Text = numbers[n-1].ToString(); 

あなたはtextBox5で最小値を表示したい場合は、あなたがそのように実行する必要があります。

textBox5.Text = numbers[0].ToString(); 

ありがとう!

+0

nは最後の配列インデックスではありません。 – sumngh

+0

私はn-1で通知してくれてありがとう。 – Saadi

+0

ようこそ@Saadi ... – sumngh

1

フォームにユーザー入力から渡されたすべての値が配列iに含まれるように設定します。このコードを使用して、必要なすべての値を取得できます。次に、変数iMax、iMin、iSum、およびflAvgを出力ラベルに書き込みます。この例では、コードを説明するために自分のデータを入れました。

int[] i = { 1, 2, 3, 4, 5 }; 
    int iSum = 0; 
    float flAvg = 0.0f; 
    int iMax = 0; 
    int iMin = Int32.MaxValue; 
    foreach (int iElement in i) 
    { 
     iSum = iSum + iElement; 
     flAvg = flAvg + iElement; 
     if (iElement > iMax) 
     { 
      iMax = iElement; 
     } 
     if (iElement < iMin) 
     { 
      iMin = iElement; 
     } 
    } 
     flAvg = flAvg/i.Length; 
//carry on to do stuff with the data down here. 
0

変更この行のコード:-1として

textBox5.Text = numbers[n-1].ToString(); 

は、それがn-1のインデックスになります、あなたはここでの最大値を選んで、ここではインデックスではありません。

numbers[i] = int.Parse(textBox1.Text); 

使用この:

とコード行の

numbers[i] = Convert.ToInt32(textBox1.Text); 
+0

これはエラーです、私はラインに入っています 'Numbers [i] = Convert.ToInt32(textbox.Text)' ** 'System.FormatException'型の未処理の例外は、 mscorlib.dllで発生しました 追加情報:入力文字列が正しい形式ではありません** –

+0

テキストボックスに入力した値は何ですか、コードにチェックを適用していないので、整数値にする必要があります。だからあなたはその事件のために確かめる必要があります。 – sumngh

+0

私は32,65,89を使用しています –

0

使用LINQは、非常にクリーンな方法であると正しく動作:

  int n = int.Parse(textBox7.Text); ; 
      int[] numbers = new int[n]; 
      for (int i = 0; i < n; i++) 
      { 
       numbers[i] = int.Parse(textBox1.Text); 
      } 
      // var array = new short[] { 4, 4, 5, 6,9 }; 

      var sum = numbers.Select(x => (int)x).Sum(); 
      var avg = numbers.Select(x => (int)x).Average(); 
      var max = numbers.Select(x => (int)x).Max(); 
      var min = numbers.Select(x => (int)x).Min(); 

      textBox4.Text = sum.ToString(); 
      textBox5.Text = avg.ToString(); 
      textBox2.Text = min.ToString(); 
      textBox3.Text = max.ToString(); 
+0

機能/方法の使用は禁止されています。私はこれらなしでできるはずです –

+0

なぜ機能/方法 –

+0

Itzユーザーの要件を使用することが禁止されていることを説明できますか?彼らは組み込み関数を必要としません。 –

関連する問題