gpt4 book ai didi

c++ - 使用数组乘以矩阵?

转载 作者:行者123 更新时间:2023-11-28 06:15:57 25 4
gpt4 key购买 nike

这是我一直在努力完成的任务。基本上我有核心思想和工作顺序的代码。但问题是我按照与说明不同的方式进行操作。

因此,为了乘以矩阵,我事先询问了数组的维度(行、列)。然后我会再次询问数组的值。

但我想做的是简单地输入我的数组的值,并根据输入的整数数量自动找到数组的维度。但我不确定该怎么做,因为我认为我的导师说过一些关于无法将数组设置为变量值或类似内容的内容。

//what I'd like to be able to do
Enter the first matrix:
1 2 3
4 5 6

Enter the second matrix:
5 6
7 8
9 0

// what I am currently doing
#include<iostream>
using namespace std;
int main()
{
int l,m,z,n;
int matrixA[10][10];
int matrixB[10][10];
int matrixC[10][10];

cout<<"enter the dimension of the first matrix"<<endl;
cin>>l>>m;
cout<<"enter the dimension of the second matrix"<<endl;
cin>>z>>n;
if(m!=z||z!=m){
cout<<"error in the multiblication enter new dimensions"<<endl;
cout<<"enter the dimension of the first matrix"<<endl;
cin>>l>>m;
cout<<"enter the dimension of the second matrix"<<endl;
cin>>z>>n;
}

else{
cout<<"enter the first matrix"<<endl;
for(int i=0;i<l;i++){
for(int j=0;j<m;j++){
cin>>matrixA[i][j];
}
}
cout<<"enter the second matrix"<<endl;
for(int i=0;i<z;i++){
for(int j=0;j<n;j++){
cin>>matrixB[i][j];
}
}
for(int i=0;i<l;i++){
for(int j=0;j<n;j++){
matrixC[i][j]=0;
for(int k=0;k<m;k++){
matrixC[i][j]=matrixC[i][j]+(matrixA[i][k] * matrixB[k][j]);
}
}
}

cout<<"your matrix is"<<endl;
for(int i=0;i<l;i++){
for(int j=0;j<n;j++){
cout<<matrixC[i][j]<<" ";
}
cout<<endl;
}
}
//system("pause");
return 0;
}

最佳答案

您不能声明具有运行时维度的数组(在 C 中称为可变长度数组,它们是允许的),维度必须在编译时已知。解决方案是使用像 std::vector 这样的标准容器。

std::vector<std::vector<int>> matrix(M, std::vector<int>(N)); // M x N 

或者使用动态数组,

int** matrix = new int*[M]; // allocate pointers for rows
for(size_t i = 0; i < N; ++i)
matrix[i] = new int[N]; // allocate each row

然后不要忘记在程序结束时删除它们

for(size_t i = 0; i < N; ++i)
delete[] matrix[i];
delete[] matrix;

您应该更喜欢 std::vector 方法,因为您不必处理内存分配等问题。

关于c++ - 使用数组乘以矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30315578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com