codecamp

a new c++ program

#include"iostream.h"
#include"cstdlib"

class Rational
{
private:
 int numerator,denominator;
public:
 Rational(int nume,int deno);
 Rational(int whole_number);
 Rational();
 void reload();
 friend bool operator ==(const Rational& num_1,const Rational& num_2);
 friend bool operator <(const Rational& num_1,const Rational& num_2);
 friend bool operator <=(const Rational& num_1,const Rational& num_2);
 friend bool operator >(const Rational& num_1,const Rational& num_2);
 friend bool operator >=(const Rational& num_1,const Rational& num_2);
 friend Rational operator +(const Rational& num_1,const Rational& num_2);
 friend Rational operator -(const Rational& num_1,const Rational& num_2);
 friend Rational operator *(const Rational& num_1,const Rational& num_2);
 friend Rational operator /(const Rational& num_1,const Rational& num_2);
 friend istream& operator >>(istream& ins,Rational& num);
 friend ostream& operator <<(ostream& outs,Rational& num);
};

Rational::Rational(int nume,int deno)
{
 int flag,i;
 if(deno==0)
 {
  cout<<"Illegal values for denominator"<<endl;
  exit(1);
 }
 numerator=nume;
 denominator=deno;
 if ((numerator*denominator)<0)
 {
  if (denominator<0)
  {
   denominator=(0-denominator);
   numerator=(0-numerator);
  }
 }
 else
 {
  if  (denominator<0)
  {
   denominator=(0-denominator);
   numerator=(0-numerator);
  }
 }
 flag=0;
 if  ((numerator*denominator)<0)
 {
  numerator=(0-numerator);
  flag=1;
 }
 for (i=2;(i<=numerator || i<=denominator);i++)
 {
  if ((denominator%i==0) && (numerator%i==0))
  {
   numerator=numerator/i;
   denominator=denominator/i;
   i--;
  }
 }
 if (flag==1)
  numerator=(0-numerator);
}
 Rational::Rational(int whole_number)
{
 numerator=whole_number;
 denominator=1;
}

Rational::Rational()
{
 numerator=0;
 numerator=1;
}
void Rational::reload()
{
 int flag=0;
 int i;
 if ((numerator*denominator)<0)
 {
  numerator=(0-numerator);
  flag=1;
 }
 for (i=2;(i<=numerator || i<=denominator);i++)
 {
  if ((denominator%i==0) && (numerator%i==0))
  {
   numerator=numerator/i;
   denominator=denominator/i;
   i--;
  }
 }
 if (flag==1)
 {
  numerator=(0-numerator);
 }
}

bool operator ==(const Rational& num_1,const Rational& num_2)
{
 return(num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
}

bool operator <(const Rational& num_1,const Rational& num_2)
{
 if(num_1.denominator*num_2.denominator>0)
  return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator);
 else
  return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator);
}

bool operator <=(const Rational& num_1,const Rational& num_2)
{
 if(num_1.denominator*num_2.denominator>0)
  return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
 else
  return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
}

bool operator >(const Rational& num_1,const Rational& num_2)
{
 if(num_1.denominator*num_2.denominator>0)
  return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator);
 else
  return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator);
}

bool operator >=(const Rational& num_1,const Rational& num_2)
{
  if(num_1.denominator*num_2.denominator>0)
  return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
 else
  return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
}

Rational operator +(const Rational& num_1,const Rational& num_2)
{
 Rational temp;
 temp.numerator=num_1.numerator*num_2.denominator+num_2.numerator*num_1.denominator;
 temp.denominator=num_1.denominator*num_2.denominator;
 temp.reload();
 return temp;
}

Rational operator -(const Rational& num_1,const Rational& num_2)
{
 Rational temp;
 temp.numerator=num_1.numerator*num_2.denominator-num_2.numerator*num_1.denominator;
 temp.denominator=num_1.denominator*num_2.denominator;
 temp.reload();
 return temp;
}

Rational operator *(const Rational& num_1,const Rational& num_2)
{
 Rational temp;
 temp.numerator=num_1.numerator*num_2.numerator;
 temp.denominator=num_1.denominator*num_2.denominator;
 temp.reload();
 return temp;
}

Rational operator /(const Rational& num_1,const Rational& num_2)
{
 Rational temp;
 temp.numerator=num_1.numerator*num_2.denominator;
 temp.denominator=num_1.denominator*num_2.numerator;
 temp.reload();
 return temp;
}

istream& operator >>(istream& ins,Rational& num)
{
 ins>>num.numerator>>num.denominator;
 return ins;
}

ostream& operator <<(ostream& outs,Rational& num)
{
 outs<<"The fraction is "<<num.numerator<<"/"<<num.denominator<<endl;
 return outs;
}
int main()
{
 int x,y;
 cout<<"Please enter the numerator and denominator of fraction"<<endl;
 cin>>x>>y;
 Rational fraction_1(1,2),fraction_2(x,y),fraction_3,fraction_4;
 cout<<fraction_1;
 fraction_3=fraction_1+fraction_2;
 fraction_4=fraction_1*fraction_2;
 cout<<fraction_2;
 cout<<fraction_3;
 cout<<fraction_4;
 return 0;
}

实验上机课的程序
计算器c语言代码
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }