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),我不能提供代码,因为它违反了课程的荣誉代码。
我完成了我的问题集 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),我不能提供代码,因为它违反了课程的荣誉代码。