c++ - 用我自己的输入将矩阵乘以向量
问题描述
我想使用这种方法将矩阵乘以一个向量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 );
但是向量呢?有没有更简单的方法?
解决方案
您与我们共享的代码存在一些问题,但这里有一些编写此代码的提示:
1)避免使用原始指针,因为你正在做你的主,可能会看看这样的东西A proper way to create a matrix in c ++ where a class is defined。例如,该类可以有一个“getInput”函数来捕获用户的输入。你也可以为向量写一些类似的东西。
2)我相信你知道,在矩阵向量乘积中,大小很重要。确保您的向量大小对应于矩阵的行数。并确保在您的程序中初始化大小。
3) 当通过标准输入将多元素输入作为列表的值时,定义分隔符很重要。(向量 [0,1,2,3,4] 可以写成"0,1,2,3,4"
)然后您必须将该字符串解析为值。或者只是逐个字符地获取您的输入。
4)根据您的输入,您的乘法功能需要“适应性”吗?所以它必须接受一些参数作为输入。
在 C++ 中,很容易迷失在非数学问题上,很容易做“坏”代码,放轻松,从两个向量的乘法开始可能是?
推荐阅读
- navigation - 如何从 gps ned 计算速度矢量
- tensorflow - Keras模型中的双三次块
- php - 二进制数据可以在没有base64的情况下存储在Redis Hashes中吗?(通过phpredis)
- html - 使其具有响应性
- google-sheets - Google 表格平均了一系列形式为 MM:SS[.\d+] 的持续时间
- javascript - 2个websockets之间的冲突
- laravel - Laravel Eloquent 获取数据(有关系)的困惑
- javascript - 使用正则表达式检查管理员和用户的输入
- gradle - 依赖问题
- angular - Angular:如何自定义 Canvas 条形图标签?