Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取文件中的数字并找到中值C_C - Fatal编程技术网

读取文件中的数字并找到中值C

读取文件中的数字并找到中值C,c,C,我正在构造一个C程序,它将斐波那契数打印到一个文件中,并找到中值 我得到的输出是一个非常大且不正确的数字。任何洞察都会很好 中值函数C int findMedian(FILE *file, int size) { int medianPos, medianVal, readVal, count; medianPos = (size / 2); count = 0; while(fscanf(file,"%d", &readVa

我正在构造一个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;
   } 
文件

输出

The Fibonacci median: -1576638118
函数调用

median = findMedian(Fibonacci, size);

您的“count”变量未初始化。因此,您的if条件可能无法满足,并且您的medianVal也未初始化。

我不知道这是否是全部问题,但是对于偶数,
size%2
0
,因此您的逻辑在那里是向后的。
if((medianPos+=1)==count
我认为这行有问题
medianPos+=1
转换为
medianPos=medianPos+1
。因此,
medianPos
将继续增加。当达到中值时,为什么需要继续阅读?(使用
size
时,您似乎已经知道文件中有多少个数字)。
count
是一个未初始化的变量。请启用编译器警告。您忘记初始化某些变量。顺便说一句:这听起来像是一个可疑的家庭作业——不允许要求那些人这样做……谢谢你的意见,露西!我已将计数初始化为0,问题仍然存在。(添加了上面的编辑)您是否也初始化了medianVal,否则可能先满足第二个条件,然后向单位化值添加一个值
median = findMedian(Fibonacci, size);