注册 登录
编程论坛 C++教室

刚学的,求各位指教

我是个菜鸟ii 发布于 2016-04-07 00:02, 4376 次点击
这是header files 文件
class Fraction
{
private:
    int a;
    int b;

    int Fraction::divisor(int p,int q);
public:
    Fraction();
    Fraction(int a,int b);
    Fraction(Fraction &c);

    void set(int a,int b);
    void show();
    Fraction add(Fraction b);
    Fraction sub(Fraction b);
    Fraction mul(Fraction b);
    Fraction div(Fraction b);
    void fas();
   
};
这是source files文件
#include"iostream"
#include"fraction.h"
using namespace std;

Fraction::Fraction()
{
    a=0;
    b=1;
}
Fraction::   Fraction(int a,int b)
{
    set(a,b);
}
Fraction::   Fraction(Fraction &c)
{
    a=c.a;
    b=c.b;
}
void Fraction::set(int a,int b)
{
    this->a=a;
    this->b=b;
}
void Fraction::show()
{
    cout<<a<<"/"<<b;
}
Fraction Fraction::add(Fraction u)//加法
{
    int tmp;
    Fraction v;

    v.a=a*u.b+b*u.a;
    v.b=b*u.b;
    fas(a,b);
    return v;
}
Fraction Fraction::sub(Fraction u)//减法
{int tmp;
    Fraction v;

    v.a=a*u.b-b*u.a;
    v.b=b*u.b;
    fas(a,b);
    return v;
}
Fraction Fraction::mul(Fraction u)//乘法
{
        int tmp;
    Fraction v;

    v.a=a*u.a;
    v.b=b*u.b;
    fas(a,b);
    return v;

}

Fraction Fraction::div(Fraction u)//除法
{    int tmp;
    Fraction v;

    v.a=a*u.b;
    v.b=b*u.a;
    fas(a,b);
    return v;
}

int Fraction::divisor(int p,int q)//计算公约数
{
    int r;
    if(p<q)
    {
        int tmp;
        tmp=p;
        p=q;
        q=tmp;
    }
    r=p%q;
    while(r!=0)
    {
        p=q;
        q=r;
        r=p%q;
    }
    return q;
}
void fas(a,b)
{
    int tmp;
    tmp=divisor(a,b);
    a=a/tmp;
    b=b/tmp;

}
还有个main函数,那个没问题的,我就不发了。问题是最后一个函数fas的编写和调用可能错了,但是我看不出来。请各位指教
这是显示的错误信息
c++\jk181042\fraction.cpp(35) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(44) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(54) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(65) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(88) : error C2065: 'a' : undeclared identifier
D:\c++\jk181042\fraction.cpp(88) : error C2065: 'b' : undeclared identifier
D:\c++\jk181042\fraction.cpp(89) : error C2448: '<Unknown>' : function-style initializer appears to be a function definition
执行 cl.exe 时出错.

fraction.obj - 1 error(s), 0 warning(s)
4 回复
#2
alice_usnet2016-04-07 16:21
程序代码:
void fas(int a,int b)
{
    int tmp;
    tmp=divisor(a,b);
    a=a/tmp;
    b=b/tmp;

}
#3
我是个菜鸟ii2016-04-07 18:42
修改了之后出现这个问题
+\jk181042\fraction.cpp(35) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(44) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(54) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(65) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(91) : error C2065: 'divisor' : undeclared identifier
#4
我是个菜鸟ii2016-04-07 18:43
回复 2楼 alice_usnet
修改了之后出现这个问题
+\jk181042\fraction.cpp(35) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(44) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(54) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(65) : error C2660: 'fas' : function does not take 2 parameters
D:\c++\jk181042\fraction.cpp(91) : error C2065: 'divisor' : undeclared identifier
#5
alice_usnet2016-04-08 11:44
void fas();
void fas(a,b)
{
    int tmp;
    tmp=divisor(a,b);
    a=a/tmp;
    b=b/tmp;

}
这是什么意思,笔误?而且应该是Fraction::fas吧
1