
#include<iostream>
using namespace std;
void InitMatrix(int**,int,int);
int** Multiply(int**,int**,int,int,int,int);
void Display(int**);
int main()
{ const int n=2;
const int k=3;
const int m=4;
int a[n][k], b[k][m];
int **c;//請補充c的定義
InitMatrix(a,n,k); //初始化矩陣a
InitMatrix(b,k,m); //初始化矩陣b
c=Multiply(a,b,n,k,k,m); //計算aXb
Display(c); //輸出計算結果
return 0;
}
void InitMatrix(int**x,int q,int p)
{
int i,j;
int**x;
x=new int*[q];
for(i=0;i<q;i++)
x[i]=new int[p];
for(i=0;i<q;i++)
for(j=0;j<p;j++)
cin>>x[i][j];
}
int** Multiply(int**a,int**b,int n,int k,int l,int m)
{
int i,j;
int**c;
c=new int*[n];
for(i=0;i<n;i++)
c[i]=new int[m];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(int x=0;x<k;x++)
for(int y=0;y<l;y++)
c[i][j]+=a[i][x]+b[y][j];
return c;
}
void Display(int**c)
{
cout<<c;
}
uj5u.com熱心網友回復:
因為陣列和二維指標并不是等價關系你可以用二維指標來“模擬”陣列,但是陣列本身可以理解成為一種“型別”,他有一維的長度屬性,而二維指標沒有
uj5u.com熱心網友回復:
#include<iostream>
using namespace std;
void InitMatrix(int***,int,int);
int** Multiply(int**,int**,int,int,int,int);
void Display(int**);
int main()
{
const int n=2;
const int k=2;
const int m=2;
//int a[n][k], b[k][m];
int **a, **b;
int **c;//請補充c的定義
InitMatrix(&a,n,k); //初始化矩陣a
InitMatrix(&b,k,m); //初始化矩陣b
c=Multiply(a,b,n,k,k,m); //計算aXb
Display(c); //輸出計算結果
return 0;
}
//void InitMatrix(int**x,int q,int p)
void InitMatrix(int***x,int q,int p)
{
int i,j;
int**tmp;
tmp = new int*[q];
for(i=0;i<q;i++)
tmp[i] = new int[p];
for(i=0;i<q;i++)
for(j=0;j<p;j++)
cin>>tmp[i][j];
*x = tmp;
}
int** Multiply(int**a,int**b,int n,int k,int l,int m)
{
int i,j;
int**c;
c = new int*[n];
for(i=0;i<n;i++)
c[i]=new int[m];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(int x=0;x<k;x++)
for(int y=0;y<l;y++)
c[i][j]+=a[i][x]+b[y][j];
return c;
}
void Display(int**c)
{
cout<<c;
}
供參考,去掉了編譯警告和error;
陣列傳給初始化的時候,里面卻用new是不可以的。
uj5u.com熱心網友回復:
謝謝大佬,問題解決了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269369.html
標籤:新手樂園
上一篇:c語言用if怎么寫
下一篇:Qt中實作拷貝位元組
