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

时间:2015-05-13 00:17:28

标签: c++ arrays

因此我们必须使用函数来填充,乘法和打印数组。 所以我创建了3个函数:一个用于填充数组,一个用于打印数组,另一个用于将前两个数组相乘。 我必须使用打印功能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];

}

1 个答案:

答案 0 :(得分:2)

尽管你的问题并没有真正解释你遇到了什么样的问题,但我已经看到了一个很大的错误。这一行:

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

您已创建了三个零大小的数组。而且无论你如何使用a1,a2,a3变量,这些数组将继续保持相同的大小。原始数组不会在C ++中动态调整大小。

因此,您尝试索引到这些阵列的任何其他内容都会运行到其他内存中,无疑会产生奇怪的结果并导致问题。