首页 > 解决方案 > C++ 在数组中,我必须在每两个连续元素之间插入乘积和求和。为什么它不起作用,我怎样才能使它起作用?

问题描述

在向量中,我必须在每两个连续元素之间插入乘积和求和。例如,1 2 3 4 向量将变为 1 3 2 2 5 6 3 7 12 4。

这是我到目前为止所做的代码。

您可以看到进行插入的函数是 insertInVector()。

#include <iostream>

void sumProduct(int a, int b, int* suma_functie, int* produs_functie)
{
    *suma_functie = a + b;
    *produs_functie = a * b;
}

void insertInVector(int &n,int v[]) 
{
    int suma, produs;
    for (int i = 1; i <= n; i++)
    {
        sumProduct(v[i], v[i + 1], &suma, &produs);

        v[i + 4] = v[i + 1];
        v[i + 1] = suma;

        v[i + 5] = v[i + 2];
        v[i + 2] =produs ;
    
    
        


    }
}
void readVector(int n, int v[])
{
    for (int i = 1; i <= n; i++)
        std::cin >> v[i];
}
void displayVector(int& n, int v[])
{
    for (int i = 1; i <= n; i++)
        std::cout << v[i]<<" ";

}
int main()
{
    int n,v[100];
    std::cin >> n;
    readVector(n, v);
    insertInVector(n, v);
    displayVector(n, v);
}

标签: c++vector

解决方案


我在您的代码中更改了一些内容。主要的事情之一是你不能在数组中间插入,因为它有一个静态内存(如果你只想在给定的数组中更改而不使用任何额外的东西,那么你应该使用vector而不是array)。所以为了这个目的,我使用了一个额外的temp数组,并在最后反映了原始数组中的这些变化。另外,我pass by reference在该功能中使用了,sumProduct因为我不知道您使用它的方式;如果你愿意,你可以改变它。同样n+(2*(n-1))是数组的新长度,可以很容易地从问题中预测出来。只需检查insertInVector功能的变化,您就会了解其余的。

#include <iostream>

void sumProduct(int a, int b, int& suma_functie, int& produs_functie)
{
    suma_functie = a + b;
    produs_functie = a * b;
}

void insertInVector(int &n,int v[]) 
{
    int suma, produs;
    int temp[100];
    for (int i = 1, j=1; i <= n-1; i++)
    {
        temp[j]=v[i];
        
        sumProduct(v[i], v[i + 1], suma, produs);

        temp[j+1]=suma;
        temp[j+2]=produs;
        j+=3;
    }
    int n2=n;
    n=n+(2*(n-1));
    temp[n]=v[n2];
    for (int i=1; i<= n; i++)
    {
        v[i]=temp[i];
    }
}
void readVector(int n, int v[])
{
    for (int i = 1; i <= n; i++)
        std::cin >> v[i];
}
void displayVector(int& n, int v[])
{
    for (int i = 1; i <= n; i++)
        std::cout << v[i]<<" ";

}
int main()
{
    int n,v[100];
    std::cin >> n;
    readVector(n, v);
    insertInVector(n, v);
    displayVector(n, v);
}

希望能帮助到你!


推荐阅读