c++面向对象程序设计第四章课后习题
这是书上的习题,我使用的是VS2010运行编译的
原习题:
4.有两个矩阵a和b,均为两行三列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如c=a+b。
#include<iostream>
using namespace std;
class Matrix{
public:
Matrix();
friend Matrix operator+(Matrix &a,Matrix &b);
void input();
void display();
private:
int mat[][];
};
//定义构造函数
Matrix::Matrix(){
for (int i=;i<;i++){
for (int j=;j<;j++){
mat[i][j]=;
}
}
}
//定义重载运算符“+”函数
Matrix operator+(Matrix &a,Matrix &b){
Matrix c;
for (int i=;i<;i++){
for (int j=;j<;j++){
c.mat[i][j]=a.mat[i][j]+b.mat[i][j];
}
}
return c;
}
void Matrix::input(){
cout<<"input value of matrix:"<<endl;
for (int i=;i<;i++){
for (int j=;j<;j++){
cin>>mat[i][j];
}
}
}
void Matrix::display(){
for (int i=;i<;i++){
for (int j=;j<;j++){
cout<<mat[i][j]<<" ";
}
cout<<endl;
}
} int main(){
Matrix a,b,c;
a.input();
b.input();
cout<<endl<<"Matrix a:"<<endl;
a.display();
cout<<endl<<"Matrix b:"<<endl;
b.display();
c=a+b;
cout<<endl<<"Matrix c=Matrix a + Matrix b:"<<endl;
c.display();
system("pause");
return ; }
运行结果:
这个运行时是要自己输入一串数字进去的
改进版:有两个矩阵a和b,均为三行三列。求两个矩阵的和,差和乘积,。重载运算符“+”,”-“,”*“,使之能用于矩阵相加,相减,相乘。如c1=a+b,才=a-b,c3=a*b。
解析:这个其实跟上面的差不多,最主要的区别在矩阵的乘法上,他们不是直接将+改成乘号就好了,矩阵的乘法运算如下
#include<iostream>
using namespace std;
class Matrix{
public:
Matrix();
//重载友元函数
friend Matrix operator+(Matrix &a,Matrix &b);
friend Matrix operator-(Matrix &a,Matrix &b);
friend Matrix operator*(Matrix &a,Matrix &b);
void input();
void display();
private:
int mat[][];
};
//定义构造函数
Matrix::Matrix(){
for (int i=;i<;i++){
for (int j=;j<;j++){
mat[i][j]=;
}
}
}
//定义重载运算符“+”函数
Matrix operator+(Matrix &a,Matrix &b){
Matrix c;
for (int i=;i<;i++){
for (int j=;j<;j++){
c.mat[i][j]=a.mat[i][j]+b.mat[i][j];
}
}
return c; }
//定义重载运算符“-”函数
Matrix operator-(Matrix &a,Matrix &b){
Matrix c;
for (int i=;i<;i++){
for (int j=;j<;j++){
c.mat[i][j]=a.mat[i][j]-b.mat[i][j];
}
}
return c;
}
//定义重载运算符“*”函数
Matrix operator*(Matrix &a,Matrix &b){
Matrix c;
for (int i=;i<;i++){
for (int j=;j<;j++){
for (int k=;k<;k++){
c.mat[i][j]=c.mat[i][j]+a.mat[i][k]*b.mat[k][j];
} }
}
return c;
} void Matrix::input(){
cout<<"input value of matrix:"<<endl;
for (int i=;i<;i++){
for (int j=;j<;j++){
cin>>mat[i][j];
}
}
}
void Matrix::display(){
for (int i=;i<;i++){
for (int j=;j<;j++){ cout<<mat[i][j]<<" ";
}
cout<<endl;
}
} int main(){
Matrix a,b,c1,c2,c3;
a.input();
b.input();
cout<<endl<<"Matrix a:"<<endl;
a.display();
cout<<endl<<"Matrix b:"<<endl;
b.display();
c1=a+b;
cout<<endl<<"Matrix c1=Matrix a + Matrix b:"<<endl;
c1.display();
c2=a-b;
cout<<endl<<"Matrix c2=Matrix a - Matrix b:"<<endl;
c2.display();
c3=a*b;
cout<<endl<<"Matrix c3=Matrix a * Matrix b:"<<endl;
c3.display();
//system("pause");
return ; }
运行结果:
6.请编写程序,处理一个复数与一个double数相加的运算,结果存放在double型的变量中dl中,输出dl的值,再以复数形式输出此值。定义Complex(复数)类,在成员函数中包含重载类型转换运算符:
operator double(){return real;}
代码:
#include<iostream>
using namespace std;
class Complex{
public:
Complex(){
real=;imag=;
}
Complex(double r){
real=r;imag=;
}
Complex(double r,double i){
real=r;imag=i;
}
operator double(){
return real;
} void display();
private:
double real;
double imag;
}; void Complex::display(){
cout<<"("<<real<<","<<imag<<")"<<endl;
}
int main(){
Complex c1(,),c2;
double dl;
dl=2.5+c1;
cout <<"dl="<<dl<<endl;
c2=Complex(dl);
cout<<"c2=";
c2.display();
system("pause");
return ;
}
运行结果:
c++面向对象程序设计第四章课后习题的更多相关文章
- C程序设计(第四版)课后习题完整版 谭浩强编著
//复习过程中,纯手打,持续更新,觉得好就点个赞吧. 第一章:程序设计和C语言 习题 1.什么是程序?什么是程序设计? 答:程序就是一组计算机能识别和执行的指令.程序设计是指从确定任务到得到结果,写出 ...
- Perl中级第四章课后习题
1.下列表达式各表示什么不同的含义: $ginger->[2][1] ${$ginger[2]}[1] $ginger->[2]->[1] ${$ginger->[2]}[1] ...
- python语言程序设计基础(嵩天)第四章课后习题部分答案
p121: *题4.1:猜数字游戏.在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了!”:小于预设的数,显示“遗憾,太小了!”,如此循环,直至猜中该数 ...
- 面向对象程序设计第四单元总结(UML系列)
2019面向对象程序设计第四单元总结 前言 本单元是面向对象程序设计课程的最后一个单元了,本单元是和UML模型相关,也就是说,我们需要正确理解UML模型的基础上,对构建出的UML模型进行解析,但是 ...
- Java面向对象程序设计第14章3-8和第15章6
Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...
- Java面向对象程序设计第9章1-9
Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- Java面向对象程序设计第7章1-8
Java面向对象程序设计第7章1-8 1."程序中凡是可能出现异常的地方必须进行捕获或拋出",这句话对吗? 不对. 异常分两类,runtime异常和非runtime异常. runt ...
- C语言程序设计·谭浩强(第四版)第二章课后习题的答案,算法——程序的灵魂
C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double ...
随机推荐
- 基于sed 的猫狗游戏
1.测试文件 [root@L shells]# cat catDog.txt snake snake pig bird dog cat snake pig bird snake cat bird do ...
- CF732D Exams 二分 贪心
思路:二分+贪心 提交次数:10次以上 错因:刚开始以为二分(边界,$+1or-1$)写错了,调了半天,后来才发现是$ck()$写错了.开始只判了最后是否小于零,而应该中间一旦小于零就$return\ ...
- Visual Studio 2019 激活
Visual Studio 2019 Enterprise 企业版:BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 Professional 专业版: ...
- kong-dashbord本地安装gulp打包报错的解决办法
本地安装kong-dashbord执行npm run build 报如下错误 gulp[]: ../src/node_contextify.cc::]->IsString()' failed. ...
- codeforces865C
Gotta Go Fast CodeForces - 865C You're trying to set the record on your favorite video game. The gam ...
- Django基础之Session操作
1. 创建一个示例 1.1 第一步 首先创建一个django项目,创建app01, 连接数据库,做好准备工作. 然后在templates目录下创建两个html: login.html负责登录页面: b ...
- Ubuntu切换登录用户和root用户
https://blog.csdn.net/master_ning/article/details/80733818
- MongDB的DateZone
先理解:Date本身是没有格式的,只是一个毫秒数,要显示成某种格式就一定是字符串 https://github.com/ewcmsfree/ewcms/wiki/Help-mongo-java-dri ...
- caps lock 映射成 esc,右Ctrl映射右移
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape' xmodmap -e 'clear Lock' -e 'keycode 105= Right'
- CefGlue获取网页源代码
1.编写一个CefStringVisitor类: public class MyStringVisitor : CefStringVisitor { private readonly TaskComp ...