第五周 2—1 分数类 对分数计算
2012-03-19 19:25
281 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 分数类 对分数计算
* 作 者: 张启立
* 完成日期: 2012 年 3 月 19 日
* 版 本 号: 1.002
* 对任务及求解方法的描述部分
* 输入描述: 十进制数
* 问题描述: 。。。。。。
* 程序头部的注释结束
#include<iostream> using namespace std; class CFraction { public: CFraction(int nu = 0, int de = 1); //构造函数,初始化用 void Set(int nu = 0, int de = 1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void Simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style = 0); //输出:以8/6为例,style为0时,输出8/6;//style为1时,输出4/3; //style为2时,输出1(1/3),表示一又三分之一; //不给出参数和非1、2,认为是方式0 private: int nume; int deno; int gcd(int , int ); bool is_CF(int n, int d) ; }; CFraction::CFraction(int nu, int de):nume(nu),deno(de){} int main() { CFraction cf; cf.Set(5, 6); cf.input(); cout << "化简后的值是:" << endl; cf.Simplify() ; cf.output(0); cout << "再扩大四倍后是:" << endl; cf.amplify(4); cf.output(0); system("PAUSE"); return 0; } void CFraction::Set(int nu, int de) { nume = nu; deno = de; } void CFraction::input() { char c; cout << "输入分数:(格式:nu/de)" << endl; while(1) { cin >> nume >> c >> deno; if(c != '/') { cout << "格式不正确,请重新输入!" << endl; } else if(! is_CF(nume, deno)) { cout << "数字非法,请重新输入!" << endl; } else { break; } } } bool CFraction::is_CF(int n, int d) { if(n < 0 || d <= 0) { return false; } return true; } void CFraction::Simplify() { nume = nume / gcd(nume, deno); deno = deno / gcd(nume, deno); } int CFraction::gcd(int nu, int de) { int t, r, a, b; a = nu; b = de; if (a < b) { t = a; a = b; b = t; } while (b != 0) { r = a % b; a = b; b = r; } return a; } void CFraction::amplify(int n) { nume *= n; } void CFraction::output(int style) { switch(style) { case(0): cout << nume << "/" << deno << endl; break; case(1): Simplify(); cout << nume << "/" << deno << endl; break; case(2): Simplify(); if(nume > deno) { int add; add = nume / deno; if(nume % deno == 0) { cout << add << endl; } else { cout << add << "(" << nume % deno << "/" << deno << ")" << endl; } } break; default: cout << nume << "/" << deno << endl; break; } }
相关文章推荐
- 《第五周任务二》设计分数类,完成对分数的运算
- 《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
- C语言:计算分数精确值
- 第五周实验报告(二)分数化简
- C++第九周【任务三】定义分数类中<<和>>运算符重载,实现分数的输入输出
- 计算分数精确值
- 第12周项目1-计算歌手大赛分数
- 分数的计算,以(-3)/8+(-5)/(-6)为例
- 1,标准差的计算 2,标准分数z-score
- 第五周项目2--输入矩形的长和宽计算面积
- 第五周-raptor 矩形面积计算
- 第五周:C:计算工资。
- 第五周 计算函数2
- 计算分数精确值
- 第五周项目二分数类的雏形
- 第九周 项目二 分数的计算(while 语句)
- 第九周任务三--定义分数类中<<和>>运算符重载,实现分数的输入输出,使程序读起来更自然。
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- JSP判断radio是否选择和传值栗子(测试应聘人员能力自动计算分数)
- 有五个学生,每个学生有3门课的成绩, 从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:如:zhagnsan,30,40,60计算出总成绩, 并把学生的信息和计算出的总分数高低顺序存放在磁盘文