最近在練習類與對象的知識點實驗,寫了一個簡單的矩陣功能的控制台小程式。功能有輸入矩陣,顯示矩陣,轉置已有矩陣,求矩陣的範數,矩陣中元素的最大值和元素之和。
代碼如下: //Matrix.cpp : 定義控制台應用程式的入口點。
//
#include <cmath>
#include <iostream>
#include <cmath>
using namespace std;
class Matrix
{
private:
int a[4][4];
public:
Matrix(int b[4][4]);
Matrix (Matrix &object1);
int sum();
double fieldNorm();
int max ();
void change ();
void showMatrix();
};
Matrix::Matrix(int b[4][4])
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
a[i][j]=b[i][j];
}
}
}
Matrix::Matrix(Matrix &x)
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
a[i][j]=x.a[i][j];
}
}
}
int Matrix::sum()
{
int s=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
s+=a[i][j];
}
}
return s;
}
double Matrix::fieldNorm()
{
double s=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
s+=a[i][j]*a[i][j];
}
}
return sqrt(s);
}
int Matrix::max()
{
int s=a[0][0];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[i][j]>s)
{
s=a[i][j];
}
}
}
return s;
}
void Matrix::change()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(i>j)
{
int t;
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}
}
void Matrix::showMatrix()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cout<<a[i][j]<<" ";
//if(j=3)cout<<"\n"; //如果給顯示元素換行,不懂為何不可用,
}
cout<<endl;
}
}
int main()
{
int a[4][4]={0,14,2,3,51,2,3,4,2,3,4,5,3,4,5,6};
Matrix f(a);
Matrix b(f);
b.showMatrix();
b.change();
b.showMatrix();
cout<<"The fanshu of Matrix is"<<b.fieldNorm()<<endl;
cout<<"The max of Matrix is"<<b.max()<<endl;
cout<<"The sum of Matrix is"<<b.sum()<<endl;
f.showMatrix();
return 0;
}
//Matrix.cpp : 定義控制台應用程式的入口點。
//
#include <cmath>
#include <iostream>
#include <cmath>
using namespace std;
class Matrix
{
private:
int a[4][4];
public:
Matrix(int b[4][4]);
Matrix (Matrix &object1);
int sum();
double fieldNorm();
int max ();
void change ();
void showMatrix();
};
Matrix::Matrix(int b[4][4])
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
a[i][j]=b[i][j];
}
}
}
Matrix::Matrix(Matrix &x)
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
a[i][j]=x.a[i][j];
}
}
}
int Matrix::sum()
{
int s=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
s+=a[i][j];
}
}
return s;
}
double Matrix::fieldNorm()
{
double s=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
s+=a[i][j]*a[i][j];
}
}
return sqrt(s);
}
int Matrix::max()
{
int s=a[0][0];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[i][j]>s)
{
s=a[i][j];
}
}
}
return s;
}
void Matrix::change()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(i>j)
{
int t;
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}
}
void Matrix::showMatrix()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cout<<a[i][j]<<" ";
//if(j=3)cout<<"\n"; //如果給顯示元素換行,不懂為何不可用,
}
cout<<endl;
}
}
int main()
{
int a[4][4]={0,14,2,3,51,2,3,4,2,3,4,5,3,4,5,6};
Matrix f(a);
Matrix b(f);
b.showMatrix();
b.change();
b.showMatrix();
cout<<"The fanshu of Matrix is"<<b.fieldNorm()<<endl;
cout<<"The max of Matrix is"<<b.max()<<endl;
cout<<"The sum of Matrix is"<<b.sum()<<endl;
f.showMatrix();
return 0;
}