Помогите переписать код в С++ на язык С#. Если есть ошибки, помогите исправить. Вот само задание: составить описание класса для работы с рациональными числами. Обеспечить выполнение арифметических операций над ними.
P.S. Должны быть класс, методы.
Вот сам код
Код:
#include<iostream.h>
#include<conio.h>
#include <math.h>
class rational {
private:
int chisl;
int znam;
public:
friend ostream &operator << (ostream& o,rational x);
rational (int c=1, int b=1) {chisl=c; znam=b;}
rational operator+ (rational &x);
rational operator- (rational &x);
rational operator* (rational &x);
rational operator/ (rational &x); };
//перегруженный оператор сложения рациональных дробей
rational rational::operator+(rational &x)
{ int delitel,crav,i,j; rational y;
y.chisl=chisl*x.znam+znam*x.chisl; y.znam=znam*x.znam;
if (y.chisl!=0)
{ j=0;int f=0; if (y.chisl<0) {f=1;y.chisl=abs(y.chisl);}
if ((y.chisl%y.znam)==0) j=1;
else
{ if ((abs(y.chisl))>(abs(y.znam))) crav=y.znam ;else crav=y.chisl;
delitel=1;
for(i=2;i<=crav;i++)
{ if ( (((abs(y.chisl))%i)==0)&&(((abs(y.znam))%i)==0) )
{ if (i>delitel) delitel=i;} }
if (delitel>=2) {y.znam=y.znam/delitel;y.chisl=y.chisl/delitel;
if (f==1) y.chisl*=-1;
}
} }
return y; }
// перегруженный оператор вычитания рациональных дробей
rational rational::operator-(rational &x)
{ rational y; int delitel,crav,i,j;
y.chisl=chisl*x.znam-znam*x.chisl;y.znam=znam*x.znam;
if (y.chisl!=0)
{ j=0;int f=0; if (y.chisl<0) {f=1;y.chisl=abs(y.chisl);}
if ((y.chisl%y.znam)==0) j=1;
else
{ if ((abs(y.chisl))>(abs(y.znam))) crav=y.znam ;else crav=y.chisl;
delitel=1;
for(i=2;i<=crav;i++)
{ if ( (((abs(y.chisl))%i)==0)&&(((abs(y.znam))%i)==0) )
{ if (i>delitel) delitel=i;} }
if (delitel>=2) {y.znam=y.znam/delitel;y.chisl=y.chisl/delitel;
if (f==1) y.chisl*=-1;
}
} }
return y;}
// перегруженный оператор умножения рациональных дробей
rational rational::operator*(rational &x)
{rational y; int delitel,crav,i,j
y.chisl=chisl*x.chisl; y.znam=znam*x.znam;
if (y.chisl!=0)
{ j=0;int f=0; if (y.chisl<0) {f=1;y.chisl=abs(y.chisl);}
if ((y.chisl%y.znam)==0) j=1;
else
{ if ((abs(y.chisl))>(abs(y.znam))) crav=y.znam ;else crav=y.chisl;
delitel=1;
for(i=2;i<=crav;i++)
{ if ( (((abs(y.chisl))%i)==0)&&(((abs(y.znam))%i)==0) )
{ if (i>delitel) delitel=i;} }
if (delitel>=2) {y.znam=y.znam/delitel;y.chisl=y.chisl/delitel;
if (f==1) y.chisl*=-1;
}
} }
return y;}
// перегруженный оператор деления рациональных дробей
rational rational::operator/(rational &x)
{ rational y; int delitel,crav,i,j
y.chisl=chisl*x.znam; y.znam=znam*x.chisl;
if (y.chisl!=0)
{ j=0;int f=0; if (y.chisl<0) {f=1;y.chisl=abs(y.chisl);}
if ((y.chisl%y.znam)!=0)
{ if ((abs(y.chisl))>(abs(y.znam))) crav=y.znam ;else crav=y.chisl;
delitel=1;
for(i=2;i<=crav;i++)
{ if ( (((abs(y.chisl))%i)==0)&&(((abs(y.znam))%i)==0) )
{ if (i>delitel) delitel=i;} }
if (delitel>=2) {y.znam=y.znam/delitel;y.chisl=y.chisl/delitel;
if (f==1) y.chisl*=-1;
}
} }
return y;}
// перегруженный оператор вывода рациональных дробей
ostream &operator << (ostream& o,rational x)
{
if (x.chisl!=0) { if ((x.chisl%x.znam)==0) o<<x.chisl/x.znam;
else o<<x.chisl<<'/'<<x.znam; }
else o<<x.chisl;
return o;
}
main()
{ int a,b;
for(;;)
{
cout<<"vvedite chislitel' u 3namenatel' pervou drobi: ";
cin>> a>>b;
if( b==0) cout<<"vvedite drob' s ne nylevim znamenatelem\n";
else break;
}
rational D1(a,b);
for(;;)
{
cout<<"vvedite chislitel' u 3namenatel' vtoroi drobi: ";
cin>> a>>b;
if( b==0) cout<<"vvedite drob' s ne nylevim znamenatelem\n";
else break;
}
rational D2 (a,b);
for(;;)
{
cout<<"vvedite chislitel' u 3namenatel' 3-ei drobi: ";
cin>> a>>b;
cout<<"vvedite drob' s ne nylevim znamenatelem\n";
if( b==0) cout<<"vvedite drob' s ne nylevim znamenatelem\n";
else break;
}
rational D3(a,b);
rational D5(a,b);
cout<<"slo}I{enie drobei:\n";
cout<<D1; cout<<" + "; cout<<D2; ;cout<<" + ";cout<<D3; cout<<"= ";
D5=D3+D2+D1;
cout<<D5; cout<<"\n";
cout<<"vbI4itanie drobei:\n";
cout<<D1; cout<<" - "; cout<<D2; cout<<"= ";
D5=D1-D2;
cout<<D5; cout<<"\n";
cout<<"ymno}I{enie drobei:\n ";
cout<<D1; cout<<" * "; cout<<D2;cout<<"= ";
D5=D1*D2;
cout<<D5; cout<<"\n";
cout<<"delenie drobei:\n";
cout<<D1; cout<<" / "; cout<<D2; cout<<"= ";
D5=D1/D2;
cout<<D5; cout<<"\n";
getch();
}