gpt4 book ai didi

c - 如何找到分隔数组中元素的常量值

转载 作者:行者123 更新时间:2023-11-30 16:43:16 24 4
gpt4 key购买 nike

我已经使用冒泡排序对用户输入数组进行了排序。接下来,我有一个函数,用于查找将数组中的每个元素均等分隔的值。我的排序代码是这样的

注意 LENGTH 定义为 25

void bubblesort(int dataset[])
{
int numpasses;
int lcv;
int temp;

for(numpasses = 1; numpasses < LENGTH; numpasses++)
{
for(lcv = 0; lcv < LENGTH - numpasses; lcv++)
{
if(dataset[lcv] > dataset[lcv + 1])
{
temp = dataset[lcv];
dataset[lcv] = dataset[lcv + 1];
dataset[lcv + 1] = temp;
}
}
}
}

接下来我查找常量值的函数如下

int findconstant(int dataset[])
{
int lcv;
int constantvalue;

for(lcv = 0; lcv < LENGTH; lcv++)
{
if ((dataset[lcv + 1] - dataset[lcv]) == (dataset[lcv + 2] - dataset[lcv + 1]))
{
constantvalue = dataset[lcv + 1] - dataset[lcv];
}
else
{
constantvalue = 0;
}
}
return(constantvalue);
}

最后,我的输出代码如下

void printdata(int dataset[], int constantvalue)
{
int lcv;
if(constantvalue != 0)
{
for(lcv = 0; lcv < LENGTH; lcv++)
{
printf("Constant value %d separates the elements: %d\n", constantvalue, dataset[lcv]);
}
}else
{
printf("No constant value that separates the elements.");
}
}

我的问题是我总是得到“没有分隔元素的恒定值”。作为我的输出,即使我输入 1 到 25,并且值 1 是常量值,我也会得到错误的打印语句。有人能告诉我哪里出了问题吗?我对冒泡排序的代码很确定,因为我从书上获取了它,所以也许我查找常量值的函数是错误的。

最佳答案

我想是循环

for (lcv = 0; lcv < LENGTH; lcv++)

应该有不同的条件,例如

for (lcv = 0; lcv < LENGTH-2; lcv++)

因为声明

(dataset[lcv + 2] - dataset[lcv + 1])

lcv == LENGTH-2lcv == LENGTH-1(最后两次迭代)时,将输出大小为LENGTH的数组of 循环)并使用不正确的值(不是数组值)进行操作。

我认为您应该重新考虑在 findconstant 中使用的方法。

更新

为了说明问题的根源,请运行简单的程序:

#define LENGTH 10
#include <stdio.h>

int main(void)
{
int dataset[LENGTH];
int lcv;
for (lcv = 0; lcv < LENGTH; lcv++)
{
dataset[lcv] = 1;
}
for (lcv = 0; lcv < LENGTH; lcv++)
{
printf("%d %d %d\n", dataset[lcv], dataset[lcv + 1], dataset[lcv + 2]);
}
}

你会看到类似的东西(不完全一样,但相似)

enter image description here

在我的输出中,我看到值-8589934605241012在数组附近作为dataset[LENGTH]dataset [LENGTH+1] - 也许您会采用其他值,但无论如何这些值都会导致程序结果不正确。您应该阅读更多关于 undefined behavior 的内容查看其他可能的问题。

关于c - 如何找到分隔数组中元素的常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45398853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com