我正在構建一個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