[英]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.