Dùng hàm cấp phát void cap(...) thì báo lỗi
#include<iostream>
#include<iomanip>
using namespace std;
//Cap phat bo nho cho ma tran
void cap(float**A,int m,int n)
{
A=new float*[m];
for(int i=1;i<=n;i++)
A[i]=new float[n];
}
//Ham nhap ma tran
void nhap(float**A,int m,int n)
{
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cout<<" A["<<i<<"]["<<j<<"]= ";
cin>>A[i][j];
}
}
//Hien thi ma tran
void in_mt(float**A,int m,int n)
{
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
if(j==1) cout<<"\n";
cout<<setw(6)<<A[i][j];
}
}
int main()
{
float**A;
int m,n;
cout<<"\n So hang cua ma tran: m= ";
cin>>m;
cout<<" So cot cua ma tran: n= ";
cin>>n;
cap(A,m,n);
nhap(A,m,n);
in_mt(A,m,n);
cout<<"\n\n\a\a\a";
}
cấp phát trực tiếp thì không sao
#include<iostream>
#include<iomanip>
using namespace std;
//Ham nhap ma tran
void nhap(float**A,int m,int n)
{
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cout<<" A["<<i<<"]["<<j<<"]= ";
cin>>A[i][j];
}
}
//Hien thi ma tran
void in_mt(float**A,int m,int n)
{
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
if(j==1) cout<<"\n";
cout<<setw(6)<<A[i][j];
}
}
int main()
{
float**A;
int m,n;
cout<<"\n So hang cua ma tran: m= ";
cin>>m;
cout<<" So cot cua ma tran: n= ";
cin>>n;
A=new float*[m];
for(int i=1;i<=n;i++)
A[i]=new float[n];
nhap(A,m,n);
in_mt(A,m,n);
cout<<"\n\n\a\a\a";
}