矩阵的标量积,C++
Scalar product of a matrix, C++
这是我第一次使用C++,似乎遇到了一些困难。我的任务有以下语句:"如果矩阵 X 的行数和列数相同(即 X 是方阵),则找到主对角线元素与随机行 K(K<=N) 中的元素的标量乘积。
#include <iostream.h>
int main(){
int M,N,i,j;
int X[20][20];
do{cout<<"n Vavedete stoinost za M:"<<endl;cin>>M;}
while(M<2||M>20);
do{cout<<"n Vavedete stoinost za N:"<<endl;cin>>N;}
while(N<2||N>20);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{cout<<"n Vavedete element ot X["<<i<<"]["<<j<<"]="<<endl;cin>>X[i][j];}
//usl.1.
int k;
if (i==j){
cout<<"n ELementite na koi red da se umnojat s tezi na glavniq diagonal:"<<endl;cin>>k;
k=k-1;
int K[20];
for(i=0;i<M;i++)
for(j=0;j<M;j++){
int SP=1;
for(k=0;k<M;k++)
SP+=X[i][j]*X[k][j];
cout<<SP<<endl;}
return 0;}
}
你的算法有几件事:
-
如果
i == j
,您可能不需要执行以下循环for(i=0;i<M;i++) for(j=0;j<M;j++){}
来计算最终和(请参阅我在 O(N) 中执行的示例) -
输入行号
K
后,我不明白为什么要增加K
值 -
在输入矩阵中的所有值之前,我可能会先检查该
M == N
在我的相应代码下方:
#include <iostream.h>
int main(){
int M,N,i,j;
int X[20][20];
do{cout<<"n Vavedete stoinost za M:"<<endl;cin>>M;}
while(M<2||M>20);
do{cout<<"n Vavedete stoinost za N:"<<endl;cin>>N;}
while(N<2||N>20);
//usl.1.
int k;
if (M==N)
{
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{cout<<"n Vavedete element ot X["<<i<<"]["<<j<<"]="<<endl;cin>>X[i][j];}
cout<<"n ELementite na koi red da se umnojat s tezi na glavniq diagonal:"<<endl;cin>>k;
k=k-1;
int SP=1;
for(i=0;i<M;i++)
{
SP+=X[i][i]*X[k][i];
cout<<SP<<endl;
}
return 1;
}
return 0;
}
如果你想用
随机行 K 的元素乘以对角线,那么为什么:
SP+=X[i][j]*X[k][j];
?
这只是将每个条目与镜像位置(沿对角线)中的条目相乘。这不是你所描述的。
你想要的是以下内容(伪)
k= random row number
for(column: columns){
total += X(column,column)*X(row,column)
}
并且不要称您的桌子为"X"...不要。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 特征中的自定义标量类型
- 为什么从具有较大阵列的 SIMD 内部函数中获得的相对加速比标量更大?
- 如何在C++中将一个特征张量乘以另一个特征张量的标量和?
- 标量类型的特征模板无法编译固定大小的子矩阵操作
- 结构 init:字符**类型的标量初始值设定项两边的大括号
- 将标准::时间点乘以标量
- 请求从"点*"转换为非标量类型"点"
- 循环中标量乘积的自动矢量化
- 转换为非标量误差是什么意思?我该如何解决?
- 标量类型上的特征模板
- 迭代器和标量对象之间的未定义行为有什么区别吗?
- C++中的标量初始值设定项错误两边的大括号
- MSVC 编译器/链接器何时合成标量/矢量删除析构函数
- 通过运算符使用标量参数重写来修改类成员
- 错误:在 C++ 中从 'Counter' 转换为非标量类型'CountDn'
- 特征:从数组类型中获取标量类型是否记录?
- 错误:请求从"Mstream"转换为非标量类型"std::string {aka std::basic_string<char>}"