我需要设置数组的大小。之后,我开始输入数字来莳制这个数组。在那个过程中,我计算总和以便稍后计算平均值。查找与C中平均值差异最小的元素C
现在我有一个数组和平均值,我需要找到与平均差异最小的元素。
像:
array size = 3
input = 1
input = 2
input = 3
average = 2
计数
abs(1 - 2) = 1
abs(2 - 2) = 0
abs(3 - 2) = 1
所以最低的差异是元素值为2
。在程序结束时,我需要从数组及其索引中提取该元素。
到目前为止,我想出了:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int n = 0, i = 0;
double average = 0;
int sum = 0;
double tmp = 0;
double min = 0;
int index = 0;
int *a;
double *b;
printf("Amount of elements = ");
scanf("%d", &n);
if(0 == n)
{
return 0;
}
if(n < 1 || n > 10)
{
return 0;
}
a = (int*)malloc(sizeof(*a) * n);
b = (double*)malloc(sizeof(*b) * n);
while(i < n)
{
printf("Input number: ");
scanf("%d", &a[i]);
sum += a[i];
i++;
}
average = (double)(sum/n);
printf("Average = %.3lf\n", average);
for(i = 0; i < n; i++)
{
tmp = abs((double)(a[ i ]) - average);
b[ i ] = tmp;
}
/* for(i = 0; i < n; i++)
{
} */
free(a);
free(b);
return 0;
}
更新:我的道歉。问题是如何实现最后一部分,而不需要将这个简单的程序更复杂化。
谢谢大家的帮助。
所以最低差的最低差和指数的2个变量,你有什么问题吗? – 2010-11-09 16:04:54