#include <iostream>
using namespace std;
class RationalNumber
{
public :
RationalNumber( ) ; //default constructor: initializes private data to "default" values
RationalNumber( int n = 0 , int d = 1 ) ; //constructor: initializes balance to d + c/100 and rate to r
void setNumerator( int newnum) ;
void setDenominator( int newden) ;
void output( ) ;
int getNumerator( ) ;
int getDenominator( ) ;
sum( ) ;
private :
int numerator;
int denominator;
} ;
RationalNumber:: RationalNumber ( int n, int d) {
setNumerator ( n) ;
setDenominator ( d) ;
// reduce();
}
void RationalNumber:: setNumerator ( int newnum)
{
numerator = newnum;
}
void RationalNumber:: setDenominator ( int newden)
{
denominator = newden;
}
int RationalNumber:: getNumerator ( )
{
return numerator;
}
int RationalNumber:: getDenominator ( )
{
return denominator;
}
void RationalNumber:: output ( ) {
cout << numerator << "/" << denominator;
}
RationalNumber RationalNumber:: sum ( const RationalNumber& a) {
Rational s;
s.numerator = a.numerator * denominator + a.denominator * numerator;
s.denominator = a.denominator * denominator;
//t.reduce();
return s;
}
int main( )
{
RationalNumber op1 = RationalNumber( 1 , - 3 ) ;
op1.output ( ) ;
RationalNumber op2 = RationalNumber( 2 ) ;
op2.output ( ) ;
RationalNumber sum = op1.add ( op2) ;
cout << "sum: " ;
sum.output ( cout ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUmF0aW9uYWxOdW1iZXIKewpwdWJsaWM6CglSYXRpb25hbE51bWJlcigpOwkvL2RlZmF1bHQgY29uc3RydWN0b3I6IGluaXRpYWxpemVzIHByaXZhdGUgZGF0YSB0byAiZGVmYXVsdCIgdmFsdWVzCglSYXRpb25hbE51bWJlcihpbnQgbiA9IDAsIGludCBkID0gMSk7CS8vY29uc3RydWN0b3I6IGluaXRpYWxpemVzIGJhbGFuY2UgdG8gZCArIGMvMTAwIGFuZCByYXRlIHRvIHIKCXZvaWQgc2V0TnVtZXJhdG9yKGludCBuZXdudW0pOwoJdm9pZCBzZXREZW5vbWluYXRvcihpbnQgbmV3ZGVuKTsKCXZvaWQgb3V0cHV0KCk7CglpbnQgZ2V0TnVtZXJhdG9yKCk7CglpbnQgZ2V0RGVub21pbmF0b3IoKTsKCSBzdW0oKTsKcHJpdmF0ZToKCWludCBudW1lcmF0b3I7CiAgICAgICAgaW50IGRlbm9taW5hdG9yOwp9OwoKCgpSYXRpb25hbE51bWJlcjo6UmF0aW9uYWxOdW1iZXIoaW50IG4sIGludCBkKSB7CiAgIHNldE51bWVyYXRvciAobik7CiAgIHNldERlbm9taW5hdG9yIChkKTsKICAvLyByZWR1Y2UoKTsKfQoKdm9pZCBSYXRpb25hbE51bWJlcjo6c2V0TnVtZXJhdG9yKGludCBuZXdudW0pCnsKCQoJCW51bWVyYXRvciA9IG5ld251bTsKfQoKdm9pZCBSYXRpb25hbE51bWJlcjo6c2V0RGVub21pbmF0b3IoaW50IG5ld2RlbikKewoJCgkJZGVub21pbmF0b3IgPSBuZXdkZW47Cn0KCmludCBSYXRpb25hbE51bWJlcjo6Z2V0TnVtZXJhdG9yKCkKewoJcmV0dXJuIG51bWVyYXRvcjsKfQppbnQgUmF0aW9uYWxOdW1iZXI6OmdldERlbm9taW5hdG9yKCkKewoJcmV0dXJuIGRlbm9taW5hdG9yOwp9Cgp2b2lkIFJhdGlvbmFsTnVtYmVyOjpvdXRwdXQoKSB7CiAgCiAgICAgIGNvdXQgPDwgbnVtZXJhdG9yIDw8ICIvIiA8PCBkZW5vbWluYXRvcjsKfQoKUmF0aW9uYWxOdW1iZXIgUmF0aW9uYWxOdW1iZXI6OnN1bShjb25zdCBSYXRpb25hbE51bWJlciYgYSkgewogICBSYXRpb25hbCBzOwoKICAgcy5udW1lcmF0b3IgPSBhLm51bWVyYXRvciAqIGRlbm9taW5hdG9yICsgYS5kZW5vbWluYXRvciAqIG51bWVyYXRvcjsKICAgcy5kZW5vbWluYXRvciA9IGEuZGVub21pbmF0b3IgKiBkZW5vbWluYXRvcjsKICAgLy90LnJlZHVjZSgpOwoKICAgcmV0dXJuIHM7Cn0KCmludCBtYWluKCkKewoJUmF0aW9uYWxOdW1iZXIgb3AxID0gUmF0aW9uYWxOdW1iZXIoMSwgLTMpOwoJb3AxLm91dHB1dCgpOwogICAgICAgIFJhdGlvbmFsTnVtYmVyIG9wMiA9IFJhdGlvbmFsTnVtYmVyKDIpOwoJb3AyLm91dHB1dCgpOwoJUmF0aW9uYWxOdW1iZXIgc3VtID0gb3AxLmFkZChvcDIpOwoJY291dCA8PCAic3VtOiAiOwoJc3VtLm91dHB1dChjb3V0KTsKCQp9Cgo=
compilation info
prog.cpp:14:7: error: ISO C++ forbids declaration of 'sum' with no type [-fpermissive]
sum();
^
prog.cpp:54:16: error: prototype for 'RationalNumber RationalNumber::sum(const RationalNumber&)' does not match any in class 'RationalNumber'
RationalNumber RationalNumber::sum(const RationalNumber& a) {
^
prog.cpp:14:3: error: candidate is: int RationalNumber::sum()
sum();
^
prog.cpp: In function 'int main()':
prog.cpp:70:27: error: 'class RationalNumber' has no member named 'add'
RationalNumber sum = op1.add(op2);
^
prog.cpp:72:17: error: no matching function for call to 'RationalNumber::output(std::ostream&)'
sum.output(cout);
^
prog.cpp:72:17: note: candidate is:
prog.cpp:49:6: note: void RationalNumber::output()
void RationalNumber::output() {
^
prog.cpp:49:6: note: candidate expects 0 arguments, 1 provided
stdout