Sie sind auf Seite 1von 5

// // // // // // // // // //

***************************************************************** * Program Name: Mixed Numbers Program * Class: COP3330 * Description: This program allows for storage of rational numbers in * a mixed number format and allows for both positive and negative * mixed number values. A zero in the denominator of the fraction part * constitutes an illegal number and is not allowed. * FinishDate (startdate): 2/7/2012 (2/14/2012) * Author: Richard Ramsey Rodriguez *****************************************************************

#include <iostream> #include "mixed.h" using namespace std; Mixed::Mixed(int a) { if(setvalue(a,0,1)) {wholenum=a; numerator=0; denominator=1;} else if( numerator<0 && wholenum<0) {wholenum=0; numerator=0; denominator=1;} } Mixed::Mixed(int p, int n, int d) { if(setvalue(p,n,d)==true) { wholenum=p; numerator=n; denominator=d; } else { wholenum=0; numerator=0; denominator=0;} } int Mixed::GetWholeNum() { return wholenum; } int Mixed::GetNumerator() const { return numerator; } int Mixed::GetDenominator() const { return denominator; } bool Mixed::setvalue(int p, int n, int d) { if(d==0||n<0&&p<0) return false; else return true; }

//mutators double Mixed::Evaluate() { double p = wholenum; double n = numerator; double d = denominator; if ( p < 0 ) { return ( p - n / d ); } else { return ( p + n / d ); } } int Mixed::ToFraction() { if( wholenum<0) numerator= wholenum * denominator - numerator; else if ( wholenum > 0) numerator = wholenum * denominator + numerator; wholenum=0; } void Mixed::Simplify() { if(numerator/denominator!=0) {if(wholenum<0) {wholenum+=(-numerator/denominator);} else wholenum+= (numerator/denominator); numerator= numerator%denominator; if(numerator<0 && wholenum!=0) numerator=numerator*(-1); } int n=numerator; int d=denominator; int f; //for factor if(d>n) {for(f=d;f>=2;f--) {if(n%f==0 && d%f==0) {numerator/=f; denominator /= f;} } } else if(n>d) {for(f=n;f>=2;f--) {if(n%f==0 && d%f==0) {numerator/=f; denominator /= f;} } } } //Operators Stand-Alone Mixed operator+(const Mixed& x, const Mixed& y) { Mixed r; // result int temp, temp2;

int temp3,temp4; temp= (x.wholenum*x.denominator)+x.numerator; temp2= (y.wholenum*y.denominator)+y.numerator; temp3= temp*y.denominator; temp4= temp2*x.denominator; r.denominator = (x.denominator * y.denominator); r.numerator=(temp3+temp4); r.Simplify(); return r; } Mixed operator-(const Mixed& x, const Mixed& y) { Mixed r; // result int temp, temp2; int temp3,temp4; temp= (x.wholenum*x.denominator)+x.numerator; temp2= (y.wholenum*y.denominator)+y.numerator; temp3= temp*y.denominator; temp4= temp2*x.denominator; r.numerator=(temp3-temp4); r.denominator = (x.denominator * y.denominator); r.Simplify(); return r; } Mixed operator*(const Mixed& x, const Mixed& y) { Mixed r; int temp, temp2; int temp3,temp4; temp= (x.wholenum*x.denominator)+x.numerator; temp2= (y.wholenum*y.denominator)+y.numerator; r.numerator=(temp*temp2); r.denominator= x.denominator* y.denominator; r.Simplify(); return r; } Mixed operator/(const Mixed& x, const Mixed& y) { Mixed r; int temp; int temp2; temp=x.wholenum*x.denominator+x.numerator; temp2=y.wholenum*y.denominator+y.numerator; r.numerator= temp * y.denominator; r.denominator=x.denominator*temp2; r.Simplify(); return r; } //bool operators bool Mixed::operator==(Mixed& f) { int temp; int temp2; temp=(wholenum*denominator+numerator)*f.denominator; temp2=(f.wholenum*f.denominator+f.numerator)*denominator;

return(temp==temp2); } bool Mixed::operator<(Mixed& f) { int temp; int temp2; temp=(wholenum*denominator+numerator)*f.denominator; temp2=(f.wholenum*f.denominator+f.numerator)*denominator; return(temp<temp2); } bool Mixed::operator>(Mixed& f) { int temp; int temp2; temp=(wholenum*denominator+numerator)*f.denominator; temp2=(f.wholenum*f.denominator+f.numerator)*denominator; return(temp>temp2); } bool Mixed::operator!=(Mixed& f) { int temp; int temp2; temp=(wholenum*denominator+numerator)*f.denominator; temp2=(f.wholenum*f.denominator+f.numerator)*denominator; return(temp!=temp2); } bool Mixed::operator<=(Mixed& f) { int temp; int temp2; temp=(wholenum*denominator+numerator)*f.denominator; temp2=(f.wholenum*f.denominator+f.numerator)*denominator; return(temp<=temp2); } bool Mixed::operator>=(Mixed& f) { int temp; int temp2; temp=(wholenum*denominator+numerator)*f.denominator; temp2=(f.wholenum*f.denominator+f.numerator)*denominator; return(temp>=temp2); }

ostream& operator<<(ostream& os, const Mixed& f) { if (f.numerator == 0) return (os << f.wholenum); if (f.wholenum == 0) return (os << f.numerator<< "/"<< f.denominator); os << f.wholenum << " " << f.numerator<< "/" << f.denominator; return os; } istream& operator>>(istream& is, Mixed& f) { char slash; is >> f.wholenum >> f.numerator >> slash>> f.denominator; return is; } Mixed& Mixed::operator++() { wholenum = wholenum + 1; return *this; } // pre-fix increment // increment the real part // return reference to calling object

Mixed Mixed::operator++(int) // post-fix increment { Mixed temp = *this; // copy current object to temp wholenum = wholenum + 1; // increment return temp; // return OLD value } Mixed& Mixed::operator--() { wholenum = wholenum - 1; return *this; } // pre-fix decrement // decrement the real part // return reference to calling object

Mixed Mixed::operator--(int) { Mixed temp = *this; // copy current object to temp wholenum = wholenum - 1; // decrement return temp; // return OLD value }

Das könnte Ihnen auch gefallen