C++ 将数组中的每个元素与第二个数组中的每个元素相乘

C++ 将数组中的每个元素与第二个数组中的每个元素相乘,c++,arrays,C++,Arrays,所以我们必须使用函数来填充、乘法和打印数组。 因此我创建了3个函数:一个用于填充数组,一个用于打印数组,还有一个用于将前两个数组相乘。 我必须使用print函数3次:打印最初的2个数组,以及打印前2个数组相乘产生的数组。 我的问题是,当我想使用“乘法”函数,以便将第一个数组中的每个元素与第二个数组中的每个元素相乘时。我对这个函数做了一些错误的操作,因为当我尝试启动它时,它会冻结 它应该是这样工作的: 第一阵列:5,5,5; 第二阵列:5,10; 我应该得到这个: 25, 25, 25, 50,

所以我们必须使用函数来填充、乘法和打印数组。 因此我创建了3个函数:一个用于填充数组,一个用于打印数组,还有一个用于将前两个数组相乘。 我必须使用print函数3次:打印最初的2个数组,以及打印前2个数组相乘产生的数组。 我的问题是,当我想使用“乘法”函数,以便将第一个数组中的每个元素与第二个数组中的每个元素相乘时。我对这个函数做了一些错误的操作,因为当我尝试启动它时,它会冻结

它应该是这样工作的: 第一阵列:5,5,5; 第二阵列:5,10; 我应该得到这个: 25, 25, 25, 50, 50, 50;

这是我目前的代码:

#include <iostream>
using namespace std;
void remplir(int array[], int dim); //function to fill array
void aficher(int array[], int dim); //function to print array
int multiplier(int array11[], int array22[], int dim1, int dim2, int   dim3); //function to multiply array


int main() {
int a1, a2, a3, array1[a1], array2[a2];
cout << "La dimension de la premiere table?" << endl;
cin >> a1;
while (a1 > 20) {
    cout << "La dimension maximum est 20! Reessayez!" << endl;
    cin >> a1;

}
remplir(array1, a1);
aficher(array1, a1);

cout << "La dimension de la deuxieme table?" << endl;
cin >> a2;
while (a2 > 20) {
    cout << "La dimension maximum est 20! Reessayez!" << endl;
    cin >> a2;

}
a3 = a1 * a2;
remplir(array2, a2);
aficher(array2, a2);

multiplier(array1, array2, a1, a2, a3);

return 0;

}

void remplir(int array[], int dim) {
int i = 0;
for (i = 0; i <= dim - 1; i = i + 1) {
    cout << "Entrez la case numero " << i << endl;
    cin >> array[i];

}
}

void aficher(int array[], int dim) {
int i;
for (i = 0; i <= dim - 1; i = i + 1) {
    cout << "indice " << i << " = " << array[i] << endl;
}
}

int multiplier(int array11[], int array22[], int dim1, int dim2, int      dim3) {
int i = 0, a = 0, resultat[dim3];
for (i = 0; i <= dim1 - 1; i = i + 1) {
    for (i = 0; i <= dim2 - 1; i = i + 1) {

        resultat[i] = array11[a] * array22[i];

    }
    a = a + 1;
}

return resultat[i];

}
#包括
使用名称空间std;
void remplir(int数组[],int dim)//函数填充数组
void-aficher(int数组[],int-dim)//用于打印阵列的函数
整数乘法器(整数数组11[],整数数组22[],整数dim1,整数dim2,整数dim3)//乘法数组的函数
int main(){
int a1,a2,a3,阵列1[a1],阵列2[a2];
couta1;
而(a1>20){
couta1;
}
remplir(阵列1,a1);
阿菲彻(阵列1,a1);
couta2;
而(a2>20){
couta2;
}
a3=a1*a2;
remplir(array2,a2);
阿菲彻(array2,a2);
乘法器(阵列1、阵列2、a1、a2、a3);
返回0;
}
void remplir(int数组[],int dim){
int i=0;

对于(i=0;i尽管你的问题没有真正解释你遇到的问题,但我已经看到了一个很大的错误。这一行:

int a1=0,a2=0,a3=0,array1[a1],array2[a2],array3[a3];

你已经创建了30个大小的数组。不管你用A1、A2、A3变量做了什么,这些数组将继续保持相同的大小。原始数组在C++中没有动态调整大小。


因此,您试图索引到这些数组中的任何其他操作都会进入其他内存,无疑会产生奇怪的结果并造成麻烦。

“我做错了什么”没有很清楚地解释您的问题-准确的编译/运行时错误消息或预期/观察到的行为会更好。如果可能,请使用
std::array
(如果您在编译时知道数组大小)或
std::vector
(如果您不知道)而不是内置数组。就目前情况而言,您的代码实际上不应该编译。因为它显然是为您编译的,所以我猜您使用的是
gcc
,它有一个bug(“扩展”,如果您愿意的话),允许此代码编译(但不工作)我是C++的新手,这实际上是我们正在学习的第一个代码。这个练习的要点是告诉我们如何使用函数来做不同的事情:比如数组、填充数组、从数组打印值。所以我真的不明白为什么我应该使用“STD:vector”,在我开始之前,你是怎么提到的。我得到的结果是错误的。如果我在第一个数组中填充vaules:5,5,5;在第二个数组中填充vaules:5;我应该得到这个结果:25,25,25。相反,我得到了一些随机数…是的。超过数组的结尾可能会导致错误和“随机”结果与其他语言不同,C++并不能阻止你去做这件事。它希望开发人员能够确保逻辑正确。