首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当涉及到数组时,基本的循环逻辑?

当涉及到数组时,基本的循环逻辑?
EN

Stack Overflow用户
提问于 2019-06-25 08:55:41
回答 3查看 52关注 0票数 -3

我很难理解简单的逻辑,因为数组从0开始。我将大量简化我的问题:

我有一个大小为5的数组。索引如下:1,2,3,4。增量是2。我需要检查每个增量元素之间的差异。

代码语言:javascript
复制
//So the result I want:
var1 = a[2] - a[0]
var2 = a[4] - a[2].
//My for loop:
incr = 2;
size = 5;
for (x = 0; x + incr < size; x+= incr)
    var[] = a[x + incr] - a[x]

这个for循环失败的原因是a[x + incr]将会越界。我怎样才能正确地构造它呢?

EN

回答 3

Stack Overflow用户

发布于 2019-06-25 09:01:58

它不会越界的。如果x + incr确实为>= size,则for条件将失败,并且不会在其中执行语句。

票数 2
EN

Stack Overflow用户

发布于 2019-06-25 09:18:05

通常,size必须使用len方法或length属性(或您的编程语言支持的任何东西)来计算,但是,在这种情况下,我可以看到您通过提供size = 5手动指定了它,因此如果数组a的实际长度小于5x + incr >= 5,它应该会导致出站错误

票数 1
EN

Stack Overflow用户

发布于 2019-06-25 21:15:42

你可能正在使用一个带有花哨的扩展的编译器,它支持随机的东西,但是var[] = a[x + incr] - a[x],这不是有效的标准语法。既然你没有解释到底是什么失败了,我假设失败就在这一行。首先,将var定义为您想要的大小和类型。在本例中,我假设您需要一个大小为2的整数数组,因为对于大小为5的数组,需要计算2个实例。

代码语言:javascript
复制
int var[2];

然后在数组中使用索引将值放入var中它们所属的位置,记住要递增放置。

代码语言:javascript
复制
int place_index = 0;
for (x = 0; x + incr < size; x+= incr){
    var[place_index] = a[x + incr] - a[x];
    place_index++;
}

然后就可以显示结果了

代码语言:javascript
复制
for (x = 0; x < 2; x++)
    std::cout << var[x] << ' ';

在给定a[5] = {0,1,2,3,4}的情况下,这将打印2 2。在给定a[5] = {0,2,4,6,8}的情况下,这将打印4 4。在给定a[5] = {0, 2, 8, 32, 128}的情况下,这将打印8 120

还有其他方法可以使用迭代器、转换、标准库等来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56745537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档