Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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,首先,这是学校的作业,所以我不能用图书馆作为障碍。 正如标题所示,我试图编写一个函数,为其输入获取一个正数序列,然后返回序列将继续的数字。例如,如果序列是311133111,那么它将返回3,因为下一个数字就是这个数字。数字序列始终以-1结尾,但是,-1不是序列的一部分,它只是标记其结束 下面是函数: #包括 整数预测(整数序列[]){ int i,j; 对于(i=0;seq[i]!=-1;i++) ; int seqLength=i; 国际代表[i+1]; 对于(j=0;j

首先,这是学校的作业,所以我不能用
图书馆作为障碍。 正如标题所示,我试图编写一个函数,为其输入获取一个正数序列,然后返回序列将继续的数字。例如,如果序列是
311133111
,那么它将返回
3
,因为下一个数字就是这个数字。数字序列始终以
-1
结尾,但是,
-1
不是序列的一部分,它只是标记其结束

下面是函数:

#包括
整数预测(整数序列[]){
int i,j;
对于(i=0;seq[i]!=-1;i++)
;
int seqLength=i;
国际代表[i+1];
对于(j=0;j
seq
(序列的缩写)是函数作为输入获取的数字序列。
seqLength
seq
有多少个数字的数字。
rep
(repeat的缩写)是序列中自身重复的部分。
repLength
rep
拥有多少个数字的数字

该函数适用于我知道的所有三个测试用例,例如:

对于
311131331311
它返回
3

对于
123143143143143
它返回
1

对于
1231212
它返回
3


但是,当我将其上传到测试和评估我的功能的学校系统时,它会测试另外两个测试用例,这是错误的。问题是,我不知道这两个额外的测试用例的输入顺序,因此我不知道为了使我的函数适用于所有测试用例,应该修改什么。有人能看到我工作中的错误,并知道为了使我的函数对任何重复的数字序列(即使是未知的数字序列)起作用,应该修改什么吗?

有一种情况,您的算法不起作用:如果重复的序列具有长度
seqLength
,在
rep
数组中找不到
-1
,因为它的定义长度为
seqLength
,并且列表末尾标记从未复制到那里。因此,最后一个循环将运行超过
rep
的末尾,并导致未定义的行为

恐怕还有其他问题,让我们尝试简化代码:

  • 将索引值与
    seqLength
    进行比较会更安全,而不是测试
    -1
    ,顺便说一下,您没有将其记录为列表末尾标记

  • 此外,将序列复制到
    rep
    数组中似乎是多余的,因为该数组始终包含
    seq
    的初始部分

  • 问题似乎归结为找到重复模式的长度

下面是一个简化版本,其中
seqLength
作为参数传递:

int预测(int-seq[],int-seq-length){
/*查找repLength的miniminum值,以使序列
长度和长度的重复模式*/
int i,回复长度;
对于(repLength=1;repLength
可能与相同?再做一些测试。未阅读代码的建议:
predict(11-1)
predict(1234-1)
predict(-1)/*给狡猾的老师*/关于:
用于(i=0;seq[i]!=-1;i++)你的问题中没有提到a
-1
-1
代表什么?请发表一篇文章,这样我们可以复制问题并帮助您调试。OT:为了便于阅读和理解,请一致地格式化代码。在每个左大括号“{”之后缩进。在每个右大括号“}”之前取消缩进。建议每个缩进级别为4个空格。我感谢您的反馈。修复了在重复序列的长度为seqLength时导致未定义行为的部分,方法是在块的大小上添加一个+1,块的大小也会被-1填充。我没有将seqLength作为输入,并且我无法修改代码来这样做。我只需要从作为唯一输入的块计算它。通过重写它尝试了你的版本(在函数中计算seqLength,而不是将其作为输入),现在它像一个符咒一样工作。非常感谢你!