为了账号安全,请及时绑定邮箱和手机立即绑定

新人求指教 为什么编译不通过

新人求指教 为什么编译不通过

C++
ShadowKun 2016-05-07 18:21:46
#include<iostream>#include<cmath>#include<vector>#include<typeinfo>using namespace std;int f(int a, int b){    int r;    r = a % b;    while(r)    {        a = b;        b = r;        r = a % b;    }    return b;}class Fract{public:    Fract(int a, int b) : n(a), m(b)    {        int x = f(n, m);        n = n / x;        m = m / x;        //cout << n << m << endl;    }    void show()    {        if(n == 0)            cout << "0" << endl;        else if(m == 1)            cout << n << endl;        else if(n < 0 && m > 0 )            cout << "-" << -n << "/" << m << endl;        else if(n > 0 && m < 0)            cout << "-" << n << "/" << -m << endl;        else if(n < 0 && m < 0)            cout << -n << "/" << -m << endl;        else            cout << n << "/" << m << endl;    }    operator double()    {        return (double)n/m;    }    Fract operator + (Fract &a)    {        int c, d;        c = n * a.m + m * a.n;        d = m * a.m;        return Fract(c, d);    }    Fract& operator += (Fract a)    {        Fract t = *this + a;        return *this = t;    }private:    int n, m;};template <class T>class  Array{public:    Array(int n):l_(n) {}    void input(int a)    {        s.clear();        int mi=l_>a?a:l_;        if(typeid(T)!=typeid(double))            for(int i=0; i<mi; i++)            {                int a,b;                cin>>a>>b;                Fract fra(a,b);                s.push_back(fra);            }        else if(typeid(T)==typeid(double))            for(int i=0; i<mi; i++)            {                double j;                cin>>j;                s.push_back(j);            }    }    T& operator[](int a)    {        return s[a];    }private:    vector<T> s;    int l_;};int main(){    int  n;    cin >> n;    Array<double> db(1000);    db.input(n);    double dbsum(0.0);    for(int i = 0; i < n; i++)        dbsum += db[i];    cout << dbsum << endl;    cin >> n;    Array<Fract> fr(1000);    fr.input(n);    Fract frsum(0, 1);    for(int i = 0; i < n; i++)        frsum += fr[i];    frsum.show();}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1285 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信