VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 247|回复: 2

我的输出怎么不一样,帮我改一改

[复制链接]
65_avatar_middle
最佳答案
0 
在线会员 发表于 2022-5-1 21:58:39 | 显示全部楼层 |阅读模式
3驿站币
根据ch18_3.cpp,增加操作符,以允许作相应赋值。

   // RMB& openator+=(const RMB&);
   // RMB& openator+=(double);
   // RMB& openator-=(const RMB&);
   // RMB& openator-=(double);

// 在此处补充你的代码
int main()
{
        RMB d1(1,60);
        RMB d2(2,50);
        RMB d3;
        double db;
        cin>>db;
        d3 += d2;
        d3 += db; d3.display();
        d3 -= d1;
        d3 -= db; d3.display();
        return 0;
}
输入
1.11
输出
3.61
0.9
样例输入
1.11
样例输出
3.61
0.9
   
来源
钱能教材练习18.4
  1. #include <iostream>
  2. using namespace std;
  3. // 在此处补充你的代码
  4. class RMB{
  5.         public:
  6.                 RMB(){
  7.                 yuan=0;
  8.                 jf=0;
  9.         }
  10.         RMB(double d);
  11.         RMB(unsigned d,unsigned c);
  12.         RMB operator+(RMB&) const;
  13.         RMB& operator ++();
  14.                 RMB& operator+=(const RMB& r);
  15.                 RMB& operator-=(const RMB& r);
  16.         void display ()const {
  17.         cout<<(yuan+jf/100.0)<<endl;}
  18.         RMB operator *(double d) const;
  19.     protected:
  20.             unsigned yuan;
  21.             unsigned jf;
  22.     };
  23. RMB::RMB(double d){
  24.         yuan=long(d);
  25.         jf=((d-yuan)*1000+5)/10;
  26. }
  27. RMB::RMB(unsigned d,unsigned c){
  28.         yuan=d+c/100;
  29.         jf=c%100;
  30. }
  31. RMB RMB::operator+(RMB& s)const
  32. {
  33.         unsigned c=jf+s.jf;
  34.         unsigned d=yuan+s.yuan;
  35.         return RMB(d,c);
  36. }
  37. RMB&RMB::operator ++()
  38. {
  39.         yuan+=(jf+1)/100;
  40.         jf=(jf+1)%100;
  41.         return *this;
  42. }
  43. RMB& RMB::operator+=(const RMB& r){
  44.         yuan+=r.yuan+(jf+r.jf)/100;
  45.         jf=(jf+r.jf)%100;
  46.         return *this;
  47. }
  48. RMB& RMB::operator-=(const RMB& r){
  49.         if(yuan+jf/100.0<r.yuan+r.jf/100.0){
  50.                 cout<<"error:the result is less than 0.\n";
  51.                 return *this;
  52.         }
  53.         yuan-=r.yuan-((jf<r.jf)?1:0);
  54.         jf=(jf+100-r.jf)%100;
  55.         return *this;
  56.        
  57. }
  58. RMB RMB::operator *(double d)const
  59. {
  60.         double temp=(yuan+jf/100.0)*d;
  61.         unsigned y=long(temp);
  62.         unsigned j=((temp-y)*1000+5)/10;
  63.         return RMB(y,j);
  64. }
  65. RMB operator*(double d,const RMB&r){
  66.         return r*d;
  67. }
  68. int main()
  69. {
  70.         RMB d1(1,60);
  71.         RMB d2(2,50);
  72.         RMB d3;
  73.         double db;
  74.         cin>>db;
  75.         d3 += d2;
  76.         d3 += db; d3.display();
  77.         d3 -= d1;
  78.         d3 -= db; d3.display();
  79.         return 0;
  80. }
复制代码





上一篇:换成函数参数换成指针就报错了。
下一篇:求助关于HookApi的一个问题
17_avatar_middle
最佳答案
37 
在线会员 发表于 2022-5-1 23:05:03 | 显示全部楼层
本帖最后由 yoobaby 于 2022-5-1 23:06 编辑

你的代码逻辑有没有写对不知道,但你并没有重载下面这两个运行符啊。
RMB& openator+=(double);
RMB& openator-=(double);

你的代码里只有个double的构造函数,

    d3 += db;
    d3 -= db;
这两句都是只调用了:

RMB::RMB(double d){
        yuan=long(d);
        jf=((d-yuan)*1000+5)/10;
}

并没有调用 RMB& openator+=(double);
65_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-5-2 10:06:44 | 显示全部楼层
yoobaby 发表于 2022-5-1 23:05
你的代码逻辑有没有写对不知道,但你并没有重载下面这两个运行符啊。
RMB& openator+=(double);
RMB& ope ...

我不知道在这里该怎么重载那两个运算符我的输出怎么不一样,帮我改一改
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-10-5 04:34

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表