Problem F: 分数类的类型转换

Description

封装一个分数类Fract,用来处理分数功能和运算,支持以下操作:

1. 构造:传入两个参数n和m,表示n/m;分数在构造时立即转化成最简分数。

2. show()函数:分数输出为“a/b”或“-a/b”的形式,a、b都是无符号整数。若a为0或b为1,只输出符号和分子,不输出“/”和分母。

3. double类型转换函数:用分子除以分母,得到的小数。注意:分子为0时不要输出为“-0”

-----------------------------------------------------------------------------

你设计一个Fract类,使得main()函数能够运行并得到正确的输出。调用格式见append.cc

Input

输入多行,每行两个整数,分别为分子和分母,至EOF结束。输入的分母不会为0;

Output

每行输出一个实数和分数,与输入顺序一致。实数为分子除以分母所得。

分数输出时为最简形式,负号只会出现在最前面,若分母为1或分子为0,则只输出一个整数,即分子部分,而没有“/”和分母部分。

Sample Input

1 3 20 -15 80 150 -9 1 6 6 12 16 -33 -48 6 11 0 -10

Sample Output

0.333333 1/3 -1.33333 -4/3 0.533333 8/15 -9 -9 1 1 0.75 3/4 0.6875 11/16 0.545455 6/11 0 0

HINT

Append Code

append.cappend.cc,

[Submit][Status][Web Board]

#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
    return b==0?a:gcd(b,a%b);
}
class Fract
{
public:
    int n,m;
    Fract(int a=0,int b=0):n(a),m(b){}
    void show()
    {
        int t=gcd(n,m);
        int x=n/t;
        int y=m/t;
        if(x==0||y==1)
            cout<<x<<endl;
        else
        {
            if(x*y<0)
                cout<<"-"<<abs(x)<<"/"<<abs(y)<<endl;
            else
                cout<<abs(x)<<"/"<<abs(y)<<endl;
        }
    }
    operator double ()
    {
        if(n==0)
            return (double)0;
        else
            return (double)n/m;
    }
};
int main()
{
    int n, m;
    while(cin >> n >> m)
    {
        Fract fr(n, m);
        cout << (double)fr << " ";
        fr.show();
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏King_3的技术专栏

leetcode-476-Number Complement

1605
来自专栏iOSDevLog

day1-numpy练习

这是在numpy邮件列表,stackoverflow和numpy文档中收集的练习集合。 该系列的目标是为新老用户提供快速参考,同时为教学人员提供一系列练习。

1621
来自专栏数据结构与算法

25:最长最短单词

25:最长最短单词 总时间限制: 1000ms 内存限制: 65536kB描述 输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格...

35210

在Python机器学习中如何索引、切片和重塑NumPy数组

在Python中,数据几乎被普遍表示为NumPy数组。

5089
来自专栏進无尽的文章

基础篇- iOS开发中常用的数学函数

1172
来自专栏程序员互动联盟

【编程基础】C语言产生随机数需要了解的几个函数

C语言产生随机数是一个常见的编程功能任务,当然这个也不难,调用两三个函数就出来了,但是你知道这些函数具体是起到怎样的作用,并且是它们是如何产生随机数的吗? 几...

2917
来自专栏calmound

hust 1607 Triangles(经典好题)

题意:给出一定的点,然后再给出哪些点相连,问最后这些相连点的组成多少个三角形,hash的应用 分析:转载牛人的思想 题意:给一些点的坐标和里面的点构成的一些线段...

2678
来自专栏mathor

科学计算库Numpy

 genfromtxt函数里穿了三个参数,分别是 要打开的文档名称,分隔符,以什么类型存储  打印结果:

984
来自专栏机器之心

资源 | 从数组到矩阵的迹,NumPy常见使用大总结

3669
来自专栏我是业余自学C/C++的

下三角矩阵

1212

扫码关注云+社区