gpt4 book ai didi

c++ - 如何实现这个程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:23:47 25 4
gpt4 key购买 nike

我已经实现了这个问题的第一部分,但未能实现第二部分。我想做的是我有两个 vector

std::vector<double> A = {1,1,2,2};
std::vector<double> B = {3,3,4,4,5,5};

我必须经历两个循环并减去两个数学 vector 。例如,

对于第一次迭代:

C = [1;1] (Note: the first two elements of A vector)

因为 C 是 2x1,我必须从 B 构造三个相同大小的数学 vector ,因此第一次迭代的输出是

1 - 3
1 - 3
------
1 - 4
1 - 4
------
1 - 5
1 - 5

对于第二次迭代,C 矩阵每次迭代扩展两个元素,因此新的 C 矩阵为 C = [1;1;2;2]。现在我们需要再次做减法,第二次迭代的输出是

1 - 3
1 - 3
2 - 4
2 - 4
------
1 - 4
1 - 4
2 - 5
2 - 5
------
1 - 5
1 - 5
2 - 3
2 - 3

如您所见,第二个数学 vector 移动了两个元素,而第一个数学 vector 保持原样。A 和 B 矩阵有这样的假设 size % 2 = 0 其中 2 是 C 矩阵的大小。

最佳答案

复制您的输出,对于第一次迭代您将拥有:

std::vector<double> A = {1,1,2,2};
std::vector<double> B = {3,3,4,4,5,5};
std::vector<double> C (A.begin(), A.begin()+2);

// bg - index of group of 2 elements in B
for (int bg = 0; bg < 3; ++bg) {
for (int ci = 0; ci < int(C.size()); ++ci) {
// bi - index of element in B
int bi = (2*bg + ci) % int(B.size());
std::cout << C[ci] << " - " << B[bi] << std::endl;
}
std::cout << "------" << std::endl;
}

对于第二次迭代,您必须更改一行:

// line changed...
std::vector<double> C (a.begin(), a.begin()+4);

编辑:好的,这是更通用的形式,它输出您为迭代计数器 it 的更改指定的两种情况。希望它在扩展 vector 时有效。

for (int it = 1; it <= int(A.size())/2; ++it) {
std::vector<double> C (A.begin(), A.begin()+it*2);

// bg - index of group of 2 elements in B
for (int bg = 0; bg < int(B.size())/2; ++bg) {
for (int ci = 0; ci < int(C.size()); ++ci) {
// bi - index of element in B
int bi = (2*bg + ci) % int(B.size());
std::cout << C[ci] << " - " << B[bi] << std::endl;
}
std::cout << "------" << std::endl;
}
std::cout << std::endl;
}

关于c++ - 如何实现这个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952451/

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