我正在构建一个C程序,它将斐波那契数字打印到一个文件中,并找到中位数。阅读文件中的数字并找到中位数C
我得到的输出是一个非常大而且不正确的数字。任何见解都会很棒。
平均函数C
int findMedian(FILE *file, int size)
{
int medianPos, medianVal, readVal, count;
medianPos = (size/2);
count = 0;
while(fscanf(file,"%d", &readVal)==1)
{
if(medianPos == count)
{
medianVal = readVal;
}
if ((medianPos += 1) == count)
{
if(size % 2) //This means that it is even
{
}
else
{
medianVal += readVal;
medianVal /= 2;
}
}
count++;
}
return medianVal;
}
文件
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
输出
The Fibonacci median: -1576638118
函数调用
median = findMedian(Fibonacci, size);
好吧,我不知道这是否是整个问题,但是对于偶数,'size%2'将会是'0',所以你的逻辑是倒退的。 – Mobius
'if((medianPos + = 1)== count)'我认为这条线有问题。 “medianPos + = 1”转换为“medianPos = medianPos + 1”。所以'medianPos'会继续增加。 – Ayush
为什么当你达到中间值时你需要继续阅读? (看起来你已经知道当你使用'size'时文件中有多少个数字) – Arash