【问题标题】:How to add two arrays in C++ from two separate for loops如何在 C++ 中从两个单独的 for 循环中添加两个数组
【发布时间】:2020-07-15 07:56:39
【问题描述】:

我对编程相当陌生,我想知道如何将数组 'adv' 和 'rcd' 添加在一起。我假设问题是因为数组“adv”和“rcd”只能在各自的“for”循环内被识别。任何帮助将不胜感激。

    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <cmath>
    #include <new>
    #include <ctime>
    #include <string>
    #include <sstream>
    #include <vector>

    const double pi = 3.1415926535897932384626433832795;
    const double convToRad = pi/180.0;
    int index1 = 180;
    int index2 = 0;
    int index3 = 0;
    int o, u, w;

    int main(){

    double rcd[index1];

    for (int o = index1; o >= 90; o--){

      rcd[o] = o*convToRad;
      //std::cout << rcd[o] << std::endl;
 }

 double adv[index2];

 for (int u = index2; u <= 90; u++){

    adv[u] = u*convToRad;
    //std::cout << adv[u] << std::endl;
 }

double car[index3];

for (int w = index3; w <= 90; w++){

    car[w] = (adv[u]+rcd[o])/2;
    std::cout << car[w] << std::endl;
  }

return 0;

}

【问题讨论】:

  • 您在 index3 为零时声明了 double car[index3]

标签: c++ arrays for-loop


【解决方案1】:

index3 设置为零时,您尝试声明数组double car[index3],换句话说,数组car[index3] 定义为:car[0]。与double adv[index2] 相同。


这样做的正确示例:

#include <iostream>

const int MAX = 10;

int main(void) {
    double arr1[MAX]   {0};
    double arr2[MAX]   {0};
    double arrSum[MAX] {0};

    for (int i = 0; i < MAX; i++) {
        // example
        arr1[i] = i + 4;
        // std::cout << arr1[i] << ' ';
    }
    std::cout << std::endl;

    for (int i = 0; i < MAX; i++) {
        // example
        arr2[i] = i + 1;
        // std::cout << arr2[i] << ' ';
    }
    std::cout << std::endl;

    for (int i = 0; i < MAX; i++) {
        arrSum[i] = (arr1[i] + arr2[i]) / 2;
        std::cout << arrSum[i] << ' ';
    }
    std::cout << std::endl;

    return 0;
}

请注意,它并不能解决您的确切问题,因为我只给出了一个可以完成您想要的工作的代码,但是是的,它会指导您如何正确解决它。


样本输出:

2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5
// sum of arr1[1] + arr2[1] <space> arr1[2] + arr2[2] ...
// uncomment the cout syntax to see further output

【讨论】:

  • 感谢您的帮助。我还注意到'adv' for 循环不打印任何内容。你知道我需要改变什么才能让它打印吗?我试过弄乱它,但似乎没有任何效果。
  • @pies84 尝试更改 index2index3 的值,因为两者都初始化为零。
【解决方案2】:

您的代码有多个错误。

int index1 = 180;
int index2 = 0;
int index3 = 0;

当您初始化数组时,rcd 的大小为 180,而 adv 的大小为 0。

for (int w = index3; w <= 90; w++){

    car[w] = (adv[u]+rcd[o])/2;
    std::cout << car[w] << std::endl;
}

在循环中 u 和 o 的值是常数。

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2019-06-12
    • 2016-08-26
    • 2020-05-27
    • 1970-01-01
    相关资源
    最近更新 更多