c++ - 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);
}
解决方案
我在您的代码中更改了一些内容。主要的事情之一是你不能在数组中间插入,因为它有一个静态内存(如果你只想在给定的数组中更改而不使用任何额外的东西,那么你应该使用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);
}
希望能帮助到你!
推荐阅读
- typescript - 将 Union 类型转换为 Intersection 类型
- php - 使用 SSL 和 phpmyadmin 连接到 mysql
- node.js - 当我保存()实体时出现错误 - 错误:循环依赖:“e” - 具有 typeORM 的 AWS 无服务器
- javascript - 如何解决当我单击确定时它会删除数据但当我单击取消时它也会删除。单击取消时它应该什么都不做
- firebase - Firebase 的离线镜像
- c++ - 如何从 SHELLEXECUTEINFO 对象读取控制台输出?
- django - 如何使用模板标签呈现表单“属性”/字段小部件
- python - 如何处理xml文件中丢失的数据?
- php - 如何在 html 中使用带有数据列表的 foreach 循环
- hover - 列表悬停弄乱整个导航 div