C++ 如何将for循环转换为数学方程?

C++ 如何将for循环转换为数学方程?,c++,c,algorithm,math,C++,C,Algorithm,Math,我的程序中有以下两个循环,我正试图将它们写成数学方程,但我很难找到一种简洁的方法: // Loop1 for (int i = 0; i < nr; i++) { array[i] = nepr; } // Loop2 for (int i = 0; i < (nvr % nr); i++) { array[i]++; } 但我不确定如何将第二个循环合并到方程中,或为其编写第二个方程。在第二个循环中,条件检查有大量的nr-1 如果我对你的问题理解正确,你可以这样表

我的程序中有以下两个循环,我正试图将它们写成数学方程,但我很难找到一种简洁的方法:

// Loop1
for (int i = 0; i < nr; i++) {
    array[i] = nepr;
}

// Loop2
for (int i = 0; i < (nvr % nr); i++) {
    array[i]++;
}

但我不确定如何将第二个循环合并到方程中,或为其编写第二个方程。

在第二个循环中,条件检查有大量的
nr-1

如果我对你的问题理解正确,你可以这样表达

array[i]=array[i]+1,i=nvr%nr,…(nr-2)


在第二个循环中,条件检查有大量的
nr-1

如果我对你的问题理解正确,你可以这样表达

array[i]=array[i]+1,i=nvr%nr,…(nr-2)


不完全清楚这是您要问的问题,但以下内容在一个循环中执行相同的操作

for (int i = 0, j = nvr % nr; i < nr; i++) {
    array[i] = nepr + (i < j);
}
for(int i=0,j=nvr%nr;i

[编辑]在不带任何循环的随意语言中,上述内容相当于


j=nvr%nr
。假设是正的
nr
nvr
0并不完全清楚这就是你要问的,但是下面在一个循环中做同样的事情

for (int i = 0, j = nvr % nr; i < nr; i++) {
    array[i] = nepr + (i < j);
}
for(int i=0,j=nvr%nr;i

[编辑]在不带任何循环的随意语言中,上述内容相当于

j=nvr%nr
。假设正的
nr
nvr
0只需将其表示为:

只需将其表达为:


这是乳胶的。要查看或编辑乳胶,请单击方程式


:=
符号表示赋值。您也可以用函数的方式编写它,方法是将
array\u i
替换为
array(i)
,这是一个在整数的开放范围上定义的函数。

这里是LaTeX。要查看或编辑乳胶,请单击方程式


:=
符号表示赋值。你也可以用函数的方式编写它,用
array(i)
替换
array(i)
,这是一个定义在开放整数范围上的函数。

我想我会尝试在精细答案的基础上发布一个完整的
int
范围souklation,当
nr,nvr
为正时,它会很好地工作——通常情况下

假设
nr、nvr
int

assert(nr != 0);
assert(nr != -1 || nvr >= -INT_MAX);  // avoid -2147483648 % -1
int j = nvr % nr;
int ij = max(i,j);
for (int i = 0; i < ij; i++) {
    array[i] = nepr + (i < j);
}
assert(nr!=0);
断言(nr!=-1 | | nvr>=-INT|u MAX);//避免-2147483648%-1
int j=nvr%nr;
int ij=最大值(i,j);
对于(int i=0;i
我想我会尝试发布一个完整的
int
范围的souklation,它基于一个很好的答案,当
nr、nvr
为正时效果很好-通常情况下

假设
nr、nvr
int

assert(nr != 0);
assert(nr != -1 || nvr >= -INT_MAX);  // avoid -2147483648 % -1
int j = nvr % nr;
int ij = max(i,j);
for (int i = 0; i < ij; i++) {
    array[i] = nepr + (i < j);
}
assert(nr!=0);
断言(nr!=-1 | | nvr>=-INT|u MAX);//避免-2147483648%-1
int j=nvr%nr;
int ij=最大值(i,j);
对于(int i=0;i
对nvr的依赖是missing@Veridian什么样的依赖?最终您将使用
nvr%nr
value,对吗?对nvr的依赖是missing@Veridian什么样的依赖?最终您将使用
nvr%nr
value,对吗?实际上,谢谢,我想我可以做到:数组[I]=nepr+(Invr=7;nr=-3@chux Right。我编辑了答案来阐明积极性假设。事实上,谢谢你,我想我能做到:array[I]=nepr+(Invr=7;nr=-3@chux Right。我编辑了答案来阐明积极性假设。我相信你的符号没有考虑到x是离散值。你的方程是x是连续的。如果我错了,请纠正我。@veridan这不是直接必要的,方程仍然有效。如果你想表示x必须是一个整数,只需单独声明。@chux似乎nvr总是正的,但我还是改变了它。是的,假设
nvr,nr
正确实简化了问题。怀疑OP是否需要一个完整的
int
解决方案。我相信你的符号没有考虑到x是离散值。你的方程是x是连续的。如果我错了,请纠正我。@Veridian这不是直接必需的,方程式仍然有效。如果你想表示x必须是一个整数,只需单独声明。@chux似乎nvr总是正的,但我还是改变了它。是的,假设
nvr,nr
正确实简化了问题。怀疑OP是否需要全范围
int
解决方案。可能您应该添加i∈ N@Logman这似乎是内在的事实,我是作为一个索引使用到array@GuyGreer但是让我们保持正式;)也许你应该加上我∈ N@Logman这似乎是内在的事实,我是作为一个索引使用到array@GuyGreer但是让我们保持正式;)
assert(nr != 0);
assert(nr != -1 || nvr >= -INT_MAX);  // avoid -2147483648 % -1
int j = nvr % nr;
int ij = max(i,j);
for (int i = 0; i < ij; i++) {
    array[i] = nepr + (i < j);
}