vs2017\vs2019 构造有理数类实现加减乘(除)四则运算

举报
悲恋花丶无心之人 发表于 2021/02/03 00:48:10 2021/02/03
【摘要】 这是针对于博客vs2017安装和使用教程(详细)和vs2019安装和使用教程(详细)的构造有理数类实现加减乘(除)四则运算的新建示例 目录 一、项目结构 二、代码 三、运行结果 四、注意事项 一、项目结构 1.头文件 CRation.h 2.源文件 CRation.cppmain.cpp         &nbsp...

这是针对于博客vs2017安装和使用教程(详细)vs2019安装和使用教程(详细)的构造有理数类实现加减乘(除)四则运算的新建示例


目录

一、项目结构

二、代码

三、运行结果

四、注意事项


一、项目结构

1.头文件

  • CRation.h

2.源文件

  • CRation.cpp
  • main.cpp

                                                                           

二、代码

1.CRation.h


  
  1. #pragma once
  2. class CRation {
  3. int n;//分子
  4. int d;//分母
  5. int Gcd();//求最大公约数
  6. public:
  7. CRation(int n, int d); //构造
  8. CRation *Add(CRation &r); // 加法
  9. CRation *Multiple(CRation &r); //乘法
  10. CRation *Subtract(CRation &r); //减法
  11. int GetN();
  12. int GetD(); // 输出
  13. };

2.CRation.cpp


  
  1. #include<math.h>
  2. #include"CRation.h"
  3. CRation::CRation(int n0, int d0)
  4. {
  5. n = n0;
  6. d = d0;
  7. int x = Gcd();
  8. n = n / x;
  9. d = d / x;
  10. }
  11. int CRation::Gcd() {//辗转相除法
  12. int x = abs(n), y = abs(d), t;
  13. if (x > y) {
  14. t = x, x = y, y = t;//交换x和y
  15. }
  16. while(y%x!=0){
  17. t = y % x;
  18. y = x;
  19. x = t;
  20. }
  21. return x;
  22. }
  23. int CRation::GetN() {
  24. return n;
  25. }
  26. int CRation::GetD() {
  27. return d;
  28. }
  29. CRation *CRation::Add(CRation &r) {
  30. int d1 = d * r.d; //分母乘积
  31. int n1 = n * r.d + r.n*d;//分子相加
  32. CRation *q = new CRation(n1, d1);//未约分的分数
  33. return q;
  34. }
  35. CRation *CRation::Multiple(CRation &r) {
  36. int d2 = d * r.d;
  37. int n2 = n * r.n;
  38. CRation *q = new CRation(n2, d2);
  39. return q;
  40. }
  41. CRation *CRation::Subtract(CRation &r) {
  42. int d1 = d * r.d; //分母乘积
  43. int n1 = n * r.d - r.n*d;//分子相加
  44. CRation *q = new CRation(n1, d1);//未约分的分数
  45. return q;
  46. }

3.main.cpp


  
  1. #include<iostream>
  2. #include"CRation.h"
  3. using namespace std;
  4. int main() {
  5. CRation r1(5, 8);
  6. CRation r2(18, 27);
  7. //加法
  8. CRation *p1 = r1.Add(r2);
  9. cout << p1->GetN() << "/" << p1->GetD() << endl;
  10. //乘法
  11. CRation *p2 = r1.Multiple(r2);
  12. cout << p2->GetN() << "/" << p2->GetD() << endl;
  13. //减法
  14. CRation *p3 = r1.Subtract(r2);
  15. cout << p3->GetN() << "/" << p3->GetD() << endl;
  16. //计算7/19 * 4/5 - 3/8
  17. CRation r3(7, 19);
  18. CRation r4(4, 5);
  19. CRation r5(3, 8);
  20. CRation *p4 = r3.Multiple(r4);
  21. CRation *p5 = (*p4).Subtract(r5);
  22. cout <<"7/19 * 4/5 - 3/8 = "<< p5->GetN() << "/" << p5->GetD() << endl;
  23. getchar();
  24. return 0;
  25. }

三、运行结果

                                                     

四、注意事项

1.函数Gcd()辗转相除法求最大公约数

2.注意CRation里加减乘的返回值是CRation指针

3.注意自己写的头文件用双引号""括起来而不是<>


返回至原博客:

vs2017安装和使用教程(详细)

vs2019安装和使用教程(详细)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/87877975

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。