练习1:(困难)
建立一个矩阵类,可以完成指定的操作或运算。
说明:
(1)、矩阵为2行3列,基类型为整型;
(2)、操作或运算:初始化(>>)、输出(<<)、赋值(=)、两个同类型矩阵的相加(+)、矩阵前置自增(++,即所有元素都加1)、矩阵后置自增(++,即所有元素都加1)、一个整数乘矩阵(*,即该整数乘以每个元素)、矩阵乘一个整数(*,即每个元素乘以该整数)。
要求:针对矩阵的各种操作,请先确认使用何种类型函数实现(仅限于成员函数、友元函数,暂不使用转换构造函数和类型转换函数)。
提示:运算符重载一般遵循如下原则:(1)=、[]、()、->必须作为成员函数;(2)<<、>>、类型转换运算符必须作为友元函数;(3)一般将单目运算符和复合运算符重载为成员函数;(4)一般将双目运算符重载为友元函数。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,2,3,4,5,6),b(6,5,4,3,2,1),c,d,e;
int a1=2,a2=3;//用于测试数乘运算时用到的整数
//(1)测试:>>,输入a和b
//a的值如下:
// 1 1 1
// 2 2 2
//b的值如下:
// 3 2 1
// 6 5 4
cout<<"请输入a和b"<<endl;
cin>>a>>b;
cout<<"--------------------------"<<endl;
//(2)测试:<<,输出a和b
//输出结果格式:
//a的值如下:(b与a类似)
// 1 1 1
// 2 2 2
cout<<"a的值如下:"<<endl;
cout<<a<<endl;
cout<<"b的值如下:"<<endl;
cout<<b<<endl;
cout<<"--------------------------"<<endl;
//(3)测试:+,并输出a+b的结果
c=a;
cout<<"a+b的结果如下:"<<endl;
cout<<a+b<<endl;
cout<<"--------------------------"<<endl;
a = c;
//(4)测试:=,将a赋给c,并输出c
cout<<"执行c=a之后,c的值如下:"<<endl;
c=a;
cout<<c;
cout<<"--------------------------"<<endl;
//(4)测试:整数左乘矩阵,计算a1*c并输出
a=c;
cout<<"测试整数左乘矩阵"<<endl;
cout<<"整数为:"<<a1<<endl;
cout<<"矩阵为:"<<endl<<c;
cout<<"整数左乘矩阵结果如下:"<<endl;
cout<<a1*c;
c=a;
cout<<"--------------------------"<<endl;
//(5)测试:整数右乘矩阵,计算c*a2并输出
cout<<"测试整数右乘矩阵"<<endl;
cout<<"整数为:"<<a2<<endl;
cout<<"矩阵为:"<<endl<<c;
cout<<"整数右乘矩阵结果如下:"<<endl;
cout<<c*a2;
cout<<"--------------------------"<<endl;
//(6)测试:前置自增++,计算d=++c并输出
c=a;
cout<<"测试前置自增++"<<endl;
cout<<"c的初始值如下:"<<endl;
cout<<c;
cout<<"d=++c执行之后结果如下:"<<endl;
d=++c;
cout<<"c的结果如下:"<<endl;
cout<<c;
cout<<"d的结果如下:"<<endl;
cout<<d;
cout<<"--------------------------"<<endl;
//(7)测试:后置自增++,计算e=c++并输出
cout<<"测试后置自增++"<<endl;
cout<<"c的初始值如下:"<<endl;
c=a;
cout<<c;
cout<<"e=c++执行之后结果如下:"<<endl;
e=c++;
cout<<"c的结果如下:"<<endl;
cout<<c;
cout<<"e的结果如下:"<<endl;
cout<<e;
cout<<"--------------------------"<<endl;
return 0;
}
示例如下:(答案不唯一)
练习2:(中等偏上)
建立一个矩阵类,可以完成指定的操作或运算。(转换构造函数的使用)
说明:
(1)、矩阵为2行3列,基类型为整型;
(2)、操作或运算:输出(<<)、标准类型(int)与矩阵对象相加(+)且满足交换律(使用转换构造函数完成)。加法规则说明:指整数与矩阵中每一个元素相加,相加结果为矩阵。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,1,1,2,3,4),b,c;
int m=2;
cout<<"(1)测试:矩阵+数:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"a+m的结果为:"<<endl;
b=a+m;
cout<<b;
cout<<"(2)测试:数+矩阵:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"m+a的结果为:"<<endl;
c=m+a;
cout<<c;
return 0;
}
示例如下:(答案不唯一)
练习3:(中等)
建立一个矩阵类,可以完成指定的操作或运算。(类型转换函数)
说明:
(1)、矩阵为2行3列,基类型为整型;
(2)、操作或运算:输出(<<)、标准类型(int)与矩阵对象相加且满足交换律(使用类型转换函数完成)。加法规则说明:指整数与矩阵中每一个元素相加, 相加结果为整数。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,1,1,2,3,4);
int m=2,b,c;
cout<<"(1)测试:矩阵+数:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"a+m的结果为:"<<endl;
b=a+m;
cout<<b<<endl;//输出一个整数
cout<<"(2)测试:数+矩阵:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"m+a的结果为:"<<endl;
c=m+a;
cout<<c<<endl;//输出一个整数
return 0;
}
示例如下:(答案不唯一)