繁体   English   中英

不使用C#中的内置函数或方法而求和的平均最小值,最大值

[英]Sum Average Min Max without using inbuild functions or Methods in C#

我编写了一个程序,用于计算求和,平均值,最小值和最大值,而没有inbulit函数或方法。 我发现了许多技巧,并锁定在下面的一种技巧中。 但是问题是,以正常方式进行时。 结果来了。 转换为Windows窗体时,无法获得输出。 它总是抛出错误。

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

我认为,您的代码中的问题在这里:

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

您的数组中将没有索引为-1的条目。

如果要在textBox5中显示最大值,则需要这样做:

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

如果要在textBox5中显示最小值,则需要执行以下操作:

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

谢谢!

将数组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.

更改此行的代码:

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

因为-1不是此处的索引,所以您在此处选择最大值将位于n-1索引处。

对于代码行:

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

用这个:

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

使用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM