CS50x pset3(为什么我的程序没有通过 Check50?)

CS50x pset3 (Why doesn't my program pass Check50?)

我完成了我的问题集 3 helpers.c 程序,它在总共 10 个 haystack 时完美运行,但是当我在 haystack 少于 10 个时按 Control-D 时停止工作。相反,程序会跳过一行,我可以像在便笺簿中一样自由书写。因为,它不能在 haystacks 中通过 3 或 4,所以我的程序不能通过 Check50。有人能解决这个问题吗?

如果你需要我的代码,这里是:

bool search(int value, int values[], int n)
{
     if(value < 0)
     {
         return false;
     }

     for(int i = 0; i < n; i++)
     {
         if (value == values[i])
         {
            return true;
         }
     }

     return false;

 }

 /**
 * Sorts array of n values.
 */
 void sort(int values[], int n)
 {
     bool tf;
     do
     {
         tf = false;
         for(int i=0; i < n-1; i++)
         {
             if(values[i] > values[i+1])
             {
                 int temp = values[i];
                 values[i] = values[i+1];
                 values[i+1] = temp;
                 tf = true;
             }
         }
     }
     while(tf == false);
     return;
 }

你的排序算法有问题。它只需要整个数组的一轮并按顺序部分但不完全排列它。

你可以使用冒泡排序(参考https://en.wikipedia.org/wiki/Bubble_sort或cs50的lecture),我不能提供代码,因为它违反了课程的荣誉代码。