将矩阵乘以我自己输入的向量

问题描述 投票:0回答:1

我想用这种方法将矩阵乘以矢量,从而为矩阵的行和列以及矢量数据引入我自己的cin>>,这也是我的乘法方法。

int multiply()
{
    int a[3][3]= //MY OWN INPUT
    int b[]={1,2,3}; //MY OWN INPUT
    int c[3]; //SOLUTION

    for (int i=0;i<3;i++)
    {
         c[i]=0;
    }

    for (int i=0;i<3;i++)
    {
        for (int j=0;j<3;j++)
        {
            c[i]+=(a[i][j]*b[j]);
        }
    }

    for (int i=0;i<3;i++){
        cout<<c[i]<<"  "<<endl;
    }
    system ("pause>0");

}

我想对于矩阵,读取输入将是这样,

void leerMatriz( int **M, int fil, int col )
{
    cout << "\nRellenar la matriz:\n";
    for( int i = 0; i < fil; i++ ){
        for( int j = 0; j < col; j++ ){
            cout << "Matriz[" << i << "][" << j << "]: ";
            cin >> M[i][j];
        }
    }
}
int main()
{
    int filA, colA, filB, colB;



    cout << "\nDimension de la matriz A:";
    cout << "\nFilas de la matriz: "; cin >> filA;
    cout << "Columnas de la matriz: "; cin >> colA;

    int** A = new int*[filA];
    for( int i = 0; i < filA; i++ )
        A[i] = new int[colA];

    leerMatriz( A, filA, colA );

    cout << "\nDimension de la matriz B:";
    cout << "\nFilas de la matriz: "; cin >> filB;
    cout << "Columnas de la matriz: "; cin >> colB;

    int** B = new int*[filB];
    for( int i = 0; i < filB; i++ )
        B[i] = new int[colB];

    leerMatriz( B, filB, colB );

但是向量呢?有没有更简单的方法?

c++ c++11 matrix vector matrix-multiplication
1个回答
0
投票

您与我们共享的代码存在一些问题,但这是编写此代码的一些提示:

1]避免像在主体中一样使用原始指针,可能要看一下类似A proper way to create a matrix in c++的情况,其中定义了一个类。例如,该类可以具有“ getInput”功能,该功能可以捕获用户的输入。您也可以为向量编写类似的内容。

2)我确定您知道,在矩阵矢量积中,大小很重要。确保向量大小与矩阵的行数相对应。并确保程序上的大小为initialized

3)当通过标准输入将多元素输入作为列表的值时,定义分隔符很重要。 (向量[0,1,2,3,4]可以写为"0,1,2,3,4"),然后您必须将该字符串解析为值。或者只是简单地逐个输入您的输入字符。

4)您的乘积功能需要根据您的输入权限“适应”吗?因此,它必须将一些参数作为输入。

在c ++中,很容易因非数学问题而迷失,而且很容易编写“错误”代码,变得容易,以两个向量相乘开始可能是?]

© www.soinside.com 2019 - 2024. All rights reserved.