📄 cc5_2.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
class matrix;
class vector
{
public:
vector(int);
~vector(){delete[]v;}
vector(vector&);
//int size(){return sz;}
void disp();
int&elem(int);
friend vector multiply(matrix&m,vector&v);
protected:
int*v;
int sz;
};
vector::vector(int s)
{
if (s<=0)
{
cerr<<"error!"<<endl;
exit(1);
}
sz=s;
v=new int[s];
}
int &vector::elem(int i)
{
if(i<0||i>=sz)
{
cerr<<"error!"<<endl;
}
return v[i];
}
vector::vector(vector& vec)
{
v=new int[sz=vec.sz];
for (int i=0;i<sz;i++)
v[i]=vec.v[i];
}
void vector::disp()
{
for (int i=0;i<sz;i++)
cout<<v[i]<<" ";
cout<<endl;
}
class matrix
{
public:
matrix(int,int);
matrix(matrix&);
~matrix(){delete[]m;}
//int sizel(){return szl;}
//int sizer(){return szr;}
//void disp();
int &elem(int,int);
friend vector multiply(matrix&m,vector&v);
protected:
int*m;
int szr;
int szc;
};
matrix::matrix(int i,int j)
{
if (i<=0||j<=0)
{
cerr<<"error!"<<endl;
exit(1);
}
szr=i;
szc=j;
m=new int[i*j];
}
matrix::matrix(matrix& mat)
{
szr=mat.szr;
szc=mat.szc;
m=new int[szr*szc];
for (int i=0;i<szr*szc;i++)
m[i]=mat.m[i];
}
int& matrix::elem(int i,int j)
{
if(i<0||i>=szr||j<0||j>=szc)
{
cerr<<"error!"<<endl;
exit(1);
}
return m[i*szc+j];
}
vector multiply(matrix&m,vector&v)
{
if (m.szc!=v.sz)
{
cerr<<"error!"<<endl;
exit(1);
}
vector r(m.szr);
for (int i=0;i<m.szr;i++)
{
r.v[i]=0;
for(int j=0;j<m.szc;j++)
r.v[i]+=m.m[i*m.szc+j]*v.v[j];
}
return r;
}
void main()
{
matrix ma(4,3);
ma.elem(0,0)=1;ma.elem(0,1)=2;ma.elem(0,2)=3;
ma.elem(1,0)=0;ma.elem(1,1)=1;ma.elem(1,2)=2;
ma.elem(2,0)=1;ma.elem(2,1)=1;ma.elem(2,2)=3;
ma.elem(3,0)=1;ma.elem(3,1)=2;ma.elem(3,2)=1;
vector ve(3);
ve.elem(0)=2;ve.elem(1)=1;ve.elem(2)=0;
vector va=multiply(ma,ve);
va.disp();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -