2015-05-13 111 views
1

我需要做一個函數,乘以2陣列,並把結果放在第三個數組,我將打印使用另一個「打印功能」。 所以,如果我輸入array11:5,10,20;和array22:1,2;我應該得到這個結果: result_array:5,10,10,20,20,40.所以第一個數組中的每個元素都與第二個數組中的每個元素相乘並存儲在第三個數組中。功能乘以2陣列

但我沒有得到預期的結果。相反,我得到一些隨機數字。 你能幫我弄清楚我做錯了什麼?

  • array11array22是第2個陣列
  • array_result是所得陣列
  • dim1dim2是第2個陣列
  • dim3的尺寸在第三陣列是的尺寸計算外 功能是這樣的:

    dim3 = dim1 * dim2; 
    
#include <iostream> 
using namespace std; 
void remplir(int array[], int dim); 
void aficher(int array[], int dim); 
void multiplier(int array11[], int array22[], int dim1, int dim2, int dim3); 

int main() { 
int dim1 = 0, dim2 = 0, dim3; 
cout << "La dimension de la 1ere table?" << endl; 
cin >> dim1; 
while (dim1 > 20) { 
    cout << "La dimension maximum est 20! Reessayez!" << endl; 
    cin >> dim1; 

} 
int array1[dim1]; 
remplir(array1, dim1); 
aficher(array1, dim1); 

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

} 
int array2[dim2]; 
remplir(array2, dim2); 
aficher(array2, dim2); 
cout<<"////////////////////////////////////////////////////////"<<endl; 

dim3 = dim1 * dim2; 
multiplier(array1, array2, dim1, dim2, dim3); 
cout << "dim3 = " << dim3 << endl; 
return 0; 

} 

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

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

} 
} 

void multiplier(int array11[], int array22[], int dim1, int dim2, int dim3) { 
int i, j, k = 0; 
int resultat[dim3]; //resulting array 
for (i = 0; i <= dim1 - 1; i = i + 1) { 
    for (j = 0; j <= dim2 - 1; j = j + 1) { 
     resultat[k++] = array11[i] * array22[j]; 
    } 
} 
aficher(resultat, dim3); //function that prints the resulting array 
} 
+0

你能不能給我們輸出的樣本? – Levi

回答

0

k永遠不會增加,所以你保持存儲的array_result的第一個元素相乘的陣列的價值。你可以嘗試:

array_result[k++] = array11[i] * array22[j];

將使用的k值,然後增加它之後。你也應該考慮缺省初始化你array_result像這樣:

int array_result[dim3] = {}; // initialise all values to 0

這將意味着你不會得到隨機數,你會看到所有的數字,但第一個是0

+0

我的不好。它現在工作得很好:) 謝謝 –

+0

發佈答案後,請謹慎更改問題中的代碼。我的回答並不反映你的問題中的新代碼。其他人應該注意我的回答是基於[原始問題](http://stackoverflow.com/revisions/30226865/1) – Tas

+0

功能「乘數」仍然存在。我只是添加了其餘的代碼。 –