C++ 调用方法C++;有编译错误
使用下面的程序,当我尝试编译它时,我会遇到大量的编译错误。我认为它们与方法调用有关。我不熟悉C++,不知道是什么引起了它们。有人能帮忙吗?以下是源代码:C++ 调用方法C++;有编译错误,c++,compilation,C++,Compilation,使用下面的程序,当我尝试编译它时,我会遇到大量的编译错误。我认为它们与方法调用有关。我不熟悉C++,不知道是什么引起了它们。有人能帮忙吗?以下是源代码: #include <iostream> using namespace std; //getting the greatest common divisor to help reduce fractions int GDC(int x, int y) { int t; while (y!=0) {
#include <iostream>
using namespace std;
//getting the greatest common divisor to help reduce fractions
int GDC(int x, int y)
{
int t;
while (y!=0)
{
t=y;
y=x%y;
x=t;
}
return x;
}
//constructing a RationalNumber wit a numerator and a denominator as seperate elements.
//it also reduces the fraction as well as show them.
//prevents 0 in the denominator as well as avoid negative denominators
class RationalNumber
{
public:
RationalNumber(int num=0, int denom=0)
{
numerator=num;
denominator=denom;
}
void show()
{
{
cout << "(" << numerator <<"/";
cout << denominator << ")";
}
}
void reduce()
{
int reduction;
reduction= GCD(numerator, denominator);
numerator=numerator/reduction;
denominator=denominator/reduction;
if(denominator == 0)
{
cout << "Cannot compute with 0 denominator ";
}
if(denominator < 0)
{
cout << "Cannot compute negative demoninators ";
}
else
{
//simplifies fraction to a whole number when denominator is 1
if(denominator == 1)
{
cout << "(" << numerator <<")";
}
else
{
cout << "(" << numerator <<"/";
cout << denominator << ")";
}
}
}
RationalNumber operator+(RationalNumber op2);
RationalNumber operator-(RationalNumber op2);
RationalNumber operator*(RationalNumber op2);
RationalNumber operator/(RationalNumber op2);
RationalNumber operator++();
private:
double numerator, denominator;
};
void Accept(int n)
{
if(n<0)
{
cout << "Cannot have negatice denominators: ";
}
else if (n == 0)
cout << "Cannot have zero in the denominator: ";
}
//Division
RationalNumber RationalNumer::operator/(RationalNumber op2)
{
RationalNumber temp;
int reduction;
temp.numerator=(numerator*op2.denominator);
temp.denominator=denominator*op2.numerator;
cout << "Division: ";
return temp;
}
//Subtraction
RationalNumber RationalNumer::operator-(RationalNumber op2)
{
RationalNumber temp;
int reduction;
temp.numerator=(numerator*op2.denominator)-(op2.numerator*denominator);
temp.denominator=op2.denominator* denominator;
cout << "Subtraction: ";
return temp;
}
//Multiplication
RationalNumber RationalNumer::operator*(RationalNumber op2)
{
RationalNumber temp;
temp.numerator=(op2.numerator*numerator);
temp.denominator=op2.denominator* denominator;
cout << "Multiplication: ";
return temp;
}
//Addition
RationalNumber RationalNumer::operator+(RationalNumber op2)
{
RationalNumber temp;
temp.numerator=(op2.numerator*denominator) + ((numerator)*(op2.denominator));
temp.denominator=op2.denominator* denominator;
cout << "Addition: ";
return temp;
}
RationalNumber RationalNumer::operator++()
{
numerator++;
denominator++;
return *this;
}
void getFraction(int &x, int &y, int &z, int &t)
{
cout << "First Fraction: ";
cout << "\n";
cout << "numerator: ";
cin >> x;
do
{
cout << "denominator: ";
cin >> y;
Accept(y);
cout << "\n";
cout << endl;
}
while(y <=0);
cout << "Second Fraction: ";
cout << "\n";
cout << "numerator: ";
cin >> z;
do
{
cout << "denominator: ";
cin >> t;
Accept(t);
cout << "\n";
cout << endl;
}
while(t <=0);
}
void aftermath(int &x, int &y, int &z, int &t)
{
RationalNumber obA, obS, obM, obD, ob2(x,y), ob3(z,t);
char Math;
cout << "Enter sign (+,-,*,/): ";
cin >> Math;
if(Math == '+')
{
obA=ob2+ob3;
obA.reduce();
cout << "\n";
}
else if(Math == '-')
{
obS=ob2-ob3;
obS.reduce();
cout << "\n\n";
}
else if(Math == '*')
{
obM=ob2*ob3;
obM.reduce();
cout << "\n\n";
}
else if(Math == '/')
{
obD=ob2/ob3;
obD.reduce();
cout << "\n\n";
}
else
cout << "Invalid sign";
}
int main()
{
char answer;
do
{
int x,y,z,t = 0;
getFraction(x,y,z,t);
RationalNumber obA, obS, obM, obD, ob2(x,y), ob3(z,t);
ob2.show();
cout <<" ";
ob3.show();
cout << "\n\n";
aftermath(x,y,z,t);
cout << "\n\n";
cout << "Create another fraction? - y or n? ";
cin >> answer;
cout << "\n";
}
while((answer == 'y'));
if((answer != 'y'))
{
cout << "GOOD-BYE ";
}
return 0;
}
#包括
使用名称空间std;
//获取最大公约数以帮助减少分数
int GDC(int x,int y)
{
int t;
而(y!=0)
{
t=y;
y=x%y;
x=t;
}
返回x;
}
//用分子和分母作为分离元素构造一个有理数。
//它还减少了分数,并显示了它们。
//防止分母中的0以及避免负分母
类有理数
{
公众:
有理数(整数=0,整数=0)
{
分子=num;
分母=分母;
}
无效显示()
{
{
cout(注意:自从我发布答案以来,Kyle已经更新了输出,因此其中一些内容缺少适当的上下文。)
第一个错误:您正在调用“GCD”,但您的函数名为“GDC”
第二个错误:“RationalNumer”不是“RationalNumer”
当您在发生第二个错误的所有地方修复第二个错误时,大多数或所有其他错误都将消失(其中有五个错误-搜索“RationalNumer”)
更新输出中的新错误-另一个输入错误:count更新输出中的新错误-另一个输入错误:count我会说,只需要担心最容易修复的错误。有时候,像缺少分号这样的简单事情会产生各种其他错误,所以请先修复缺少的分号或任何错误(即使它不是您看到的第一个错误)然后重新编译(有时)所有其他错误也会消失。
g++ -o Math math.cpp
math.cpp: In member function 'void RationalNumber::reduce()':
math.cpp:37: error: 'GCD' was not declared in this scope
math.cpp: In function 'void getFraction(int&, int&, int&, int&)':
math.cpp:136: error: invalid operands of types '<unresolved overloaded function type>' and 'const char [2]' to binary 'operator<<'
math.cpp:151: error: invalid operands of types '<unresolved overloaded function type>' and 'const char [2]' to binary 'operator<<'