int average(int [] a, int k)
{
int average, s, i, n;
s = 0;
for (i = 0; i < k - 1; i++)
{
a[i] = Convert.ToInt32(lblSortiranNiz.Items[i]);
s = s + a[i];
}
average = s / k;
return average;
}
感谢您的帮助,但现在我不知道如何将它放入我的主程序
private void button1_Click(object sender, EventArgs e)
{
int i, j, n, pom, average1;
n = lblBrojevi.Items.Count;
int[] a = new int[n];
for (i = 0; i < n; i++)
a[i] = Convert.ToInt32(lblBrojevi.Items[i]);
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
if (a[i] > a[j])
{
pom = a[i];
a[i] = a[j];
a[j] = pom;
}
}
for (i = 0; i < n; i++)
{
lblSortiranNiz.Items.Add(a[i]);
}
average1 = prosek(a[i], 3);
tbaverage.Text = Convert.ToString(average1);
}
我尝试使用数字3作为k,但它不起作用,它给了我一些错误的小数字。如果可以,请帮助我。
答案 0 :(得分:1)
您正在使用int
作为int
的数组。您应该通过使用以下内容替换第一行来修复它:
int average(int[] a, int k)
答案 1 :(得分:1)
参数名为&#34; a&#34;不是数组,您正在使用索引([])运算符。此外,在计算平均值时,将k视为缺少最后一个元素的元素数量:
int average(int[] a, int k)
{
int average, s, i, n;
s = 0;
for (i = 0; i < k; i++)
{
a[i] = Convert.ToInt32(lblSortiranNiz.Items[i]);
s = s + a[i];
}
average = s / k;
return average;
}
实际上你不需要k参数,因为数组有Length属性。
这似乎是一项功课,但只是要知道,您可以在LINQ中使用Average扩展方法。
答案 2 :(得分:1)
您使用的方法的数据类型是int, 你只需要使用数组数据类型。
就像那样。
int average(int []a, int k)
答案 3 :(得分:0)
为什么你不使用LINQ?这是一个示例:
var avarage = lblSortiranNiz.Items.Select(i=>Convert.ToInt32(i))
.Take(k)
.Sum() / k;