Ich konstruiere ein C-Programm, das Fibonacci-Zahlen in eine Datei druckt und den Median findet.Zahlen in Datei lesen und Median C finden
Die Ausgabe, die ich bekomme, ist eine sehr große und falsche Nummer. Jede Einsicht wäre großartig.
Median Funktion 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;
}
Datei
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
Ausgabe
The Fibonacci median: -1576638118
Function Call
median = findMedian(Fibonacci, size);
Nun, ich habe keine Ahnung, ob das das ganze Problem ist, aber "size% 2" wird für gerade Zahlen "0" sein, also ist deine Logik dort rückwärts. – Mobius
'if ((medianPos + = 1) == count)' Ich denke, diese Zeile hat das Problem. "medianPos + = 1" bedeutet "medianPos = medianPos + 1". Also wird 'medianPos' weiter steigen. – Ayush
Warum müssen Sie weiterlesen, wenn Sie den Medianwert erreichen? (Sieht aus, als ob Sie bereits wissen, wie viele Zahlen in der Datei sind, wenn Sie 'size' verwenden) – Arash