补作业 第五次实验 项目5

xiaoxiao2021-02-28  47

一、问题及代码

/* * 文件名称:分数类.cpp * 作 者:赖豪运 * 完成日期:2017 年 5 月 7 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述:无 * 问题描述: C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如分数。我们可以自定义类支持这些数据类型。   本任务将设计一个简单的分数类,完成对分数的几个运算 * 程序输出:略 * 问题分析:略 * 算法设计:略 */ #include<iostream> #include<Cmath> using namespace std; int gcd(int m, int n); class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu = 0, int de = 1); void set(int nu = 0, int de = 1); void input(); void simplify(); void amplify(int n); void output(int style = 0); }; CFraction::CFraction(int nu, int de) { if (de != 0) { nume = nu; deno = de; } else { cerr << "初始化中发生错误,程序退出\n"; system("pause"); exit(0); } } void CFraction::set(int nu, int de) { if (de != 0) { nume = nu; deno = de; } } void CFraction::input() { int nu, de; char c; while (1) { cout << "输入分数(m/n): "; cin >> nu >> c >> de; if (c != '/') cout << "输入格式错误!\n "; else if (de == 0) cout << "分母不能为零!\n "; else break; } nume = nu; deno = de; } void CFraction::simplify() { int n = gcd(deno, nume); deno /= n; nume /= n; } int gcd(int m, int n) { int r; if (m<n) { r = m; m = n; n = r; } while (r = m%n) { m = n; n = r; } return n; } void CFraction::amplify(int n) { nume *= n; } void CFraction::output(int style) { int n; switch (style) { case 0: cout << "原样:" << nume << '/' << deno << endl;break; case 1: n = gcd(deno, nume); cout << "化简形式: " << nume / n << '/' << deno / n << endl;break; case 2: cout << "带分数形式:" << nume / deno << '(' << nume
转载请注明原文地址: https://www.6miu.com/read-76131.html

最新回复(0)