gpt4 book ai didi

c++ - 如何通过与 C++ 中的其他项相乘来更新数组项

转载 作者:行者123 更新时间:2023-12-02 02:22:02 25 4
gpt4 key购买 nike

我想要得到的结果是将索引值与其他索引值相乘。例如在下面的代码中:我想通过 arr[0]*arr[1] 更新 arr[0] 值,通过 arr[9]*arr[9-8] 更新 arr[9] 值,对于其余索引,它将是 arr[i-1 ] * arr[i] * arr[i+1]。它在第一个索引上工作正常,但在其他索引上我得到了意想不到的结果。

#include<iostream>
using namespace std;

int main(){
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, j, k;

for(j = 0; j < 10; j++){
if(j == 0){
arr[j] = arr[j] * arr[j + 1];
}else if(j == 9){
arr[j] = arr[j] * arr[j - 1];
}else{
arr[j] = arr[j - 1] * arr[j] * arr[j + 1];
}
}

for(k = 0; k < 10; k++){
cout<<arr[k]<<" ";
}
}

输出:2 12 144 2880 86400 3628800 203212800 1746419712 -1736015872 -180289536

预期结果:2 6 24 60 120 210 336 504 720 90

最佳答案

您需要将结果存储在单独的数组中,否则您将覆盖用于将来计算的同一数组中的值。

就您而言,当j == 0时,您会:

arr[0] = arr[0] * arr[1]; // 1 * 2 = 2

所以arr[0]现在是2。然后你就可以了

arr[1] = arr[0] * arr[1] * arr[2]; // 2 * 2 * 3 = 12, not 1 * 2 * 3 = 6

...等等。如果您将结果存储在单独的数组中,那么这个问题就会消失。示例:

#include <iostream>
// using namespace std; // Don't use this.

int main(){
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int res[10] = {0};

for(int j = 0; j < 10; j++) {
if (j == 0)
res[j] = arr[j] * arr[j + 1];
else if (j == 9)
res[j] = arr[j] * arr[j - 1];
else
res[j] = arr[j - 1] * arr[j] * arr[j + 1];
}

for(int k = 0; k < 10; k++)
std::cout << res[k] << ' ';
}

输出:

2 6 24 60 120 210 336 504 720 90 

关于c++ - 如何通过与 C++ 中的其他项相乘来更新数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66273890/

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