【发布时间】:2014-09-28 06:01:02
【问题描述】:
我使用动态多维数组在 c++ 中制作了矩阵乘法程序。 问题是当我输入测试值时 matrix A = row1{ 1 } , row2 { 2 } matrix B = row1 {1 ,2 , 3} ,它在用户所在的循环停止工作 输入第一个数组的值,我使用调试找到了它。但是当我进入时程序运行良好 矩阵 A = row1{ 1 , 2 } , row2 { 3 , 4 } 矩阵 B = row1 {5 , 6 } , row2 {7 , 8}
我希望这个程序是一个可以将所有矩阵相乘的通用程序
#include <iostream>
using namespace std;
class Lab_02
{
public:
void Product(){
int a1Rows, a1Columns;
int a2Rows, a2Columns;
cout << "Plz Enter the no. of rows for Array 1 :";
cin >> a1Rows;
cout << "Plz Enter the no. of columns for Array 1 :";
cin >> a1Columns;
cout << "Plz Enter the no. of rows for Array 2 :";
cin >> a2Rows;
cout << "Plz Enter the no. of columns for Array 2 :";
cin >> a2Columns;
int **dynamicArray = 0;
int **dynamicArray2 = 0;
int **dynamicArray3 = 0;
cout << endl;
for (int i = 0; i < a1Rows; i++)
{
dynamicArray3 = new int *[a1Rows];
}
for (int i = 0; i < a2Columns; i++)
{
dynamicArray3[i] = new int[a2Columns];
}
// memory allocated for elements of rows.
for (int i = 0; i < a1Rows; i++)
{
dynamicArray = new int *[a1Rows];
}
// memory allocated for elements of each column.
for (int i = 0; i < a1Columns; i++)
{
dynamicArray[i] = new int[a1Columns];
}
// memory allocated for elements of rows.
for (int i = 0; i < a2Rows; i++)
{
dynamicArray2 = new int *[a2Rows];
}
// memory allocated for elements of each column.
for (int i = 0; i < a2Columns; i++)
{
dynamicArray2[i] = new int[a2Columns];
}
cout << "enter the values or array 1 \n";
for (int i = 0; i < a1Rows; i++)
{
for (int j = 0; j < a1Columns; j++)
{
cout << "array[" << i << "][" << j << "]\t";
cin >> dynamicArray[i][j];
}
}
cout << "enter the values or array 2 :\n";
for (int i = 0; i < a2Rows; i++)
{
for (int j = 0; j < a2Columns; j++)
{
cout << "array[" << i << "][" << j << "]\t";
cin >> dynamicArray2[i][j];
}
}
int sum;
for (int i = 0; i < a1Rows; i++)
{
for (int j = 0; j < a1Columns ; j++)
{
sum = 0;
for (int k = 0; k < a2Columns ; k++)
{
sum = sum + (dynamicArray[i][k] * dynamicArray2[k][j]);
}
dynamicArray3[i][j] = sum;
}
}
cout <<"Result" << endl << endl;
for (int i = 0; i < a1Rows; i++)
{
for (int j = 0; j < a2Columns; j++)
{
cout << dynamicArray3[i][j] << "\t";
}
cout << endl;
}
}
};
void main(void)
{
Lab_02 object;
object.Product();
}
【问题讨论】:
-
您为什么不使用
std::vector并摆脱这些问题? -
因为我一定会这样做! ,除了如果可能那为什么不呢,我稍后会研究更好的方法,首先我必须了解每个概念:)
-
我不明白您对输入内容的描述。 Array1 输入了多少行和列,Array2 输入了多少行/列?
-
感谢您的理解 :) !用于数组 1、2 行和 1 列
-
对于数组 2 1 行 3 列
标签: c++ arrays multidimensional-array matrix-multiplication dynamic-arrays