定义一个矩阵类CMatrix(四*4), 设计成员函数,数据成员,①要求能通过键盘对矩阵进行初始化。②求矩阵的两条对角线元素值之和。③按4行4列,输出这个矩阵
定义一个矩阵类CMatrix(4*4), 设计成员函数,数据成员,①要求能通过键盘对矩阵进行初始化。②求矩阵的两条对角线元素值之和。③按4行4列,输出这个矩阵。
有同学使用二维数组做了出来,想使用动态分配内存的方法完成此项任务,望大神指教,给出详细程序!!!
------解决方案--------------------
有同学使用二维数组做了出来,想使用动态分配内存的方法完成此项任务,望大神指教,给出详细程序!!!
------解决方案--------------------
#include<iostream>
using namespace std;
class Matrix
{
private:
int row;
int *number;
public:
Matrix(int r);
void print();
int add_sum();
};
Matrix::Matrix(int r) //构造
{
row=r;
number=new int[row*row];
cout<<"Input the Matrix:\n";
for(int i=0;i<row*row;i++)
cin>>number[i];
}
int Matrix::add_sum()
{
int sum=0;
for(int i=0;i<row;i++) //对角线元素和
{
sum+=number[i+i*row];
sum+=number[(i+1)*(row-1)];
}
if(row%2) //行列为奇数
sum-=number[(row+1)*(int)(row/2)];
return sum;
}
void Matrix::print() //打印矩阵
{
for(int i=0;i<row*row;i++)
{
cout<<number[i];
if(!((i+1)%row))
cout<<endl;
else
cout<<" ";
}
}
int main()
{
int N;
cout<<"输入维数:";
cin>>N;
Matrix matrix=Matrix(N);
matrix.print();
cout<<"对角线之和:"<<matrix.add_sum()<<endl;
}