private int GCD (int a, int b)
if (a<b) {tmp = a; a = b; b = tmp;}
{r = a % b; a = b; b = r;}
public void Add(Rational r)
this.num = this.num * r.denum + r.num * this.denum;
this.denum = this.denum*r.denum;
this.num = this.num/g; this.denum = this.denum/g;
public void Sub(Rational r)
this.num = this.num * r.denum - r.num * this.denum;
this.denum = this.denum*r.denum;
public void Mult(Rational r)
this.num = this.num * r.num ;
this.denum = this.denum*r.denum;
public void Div(Rational r)
this.num = this.num * r.denum ;
this.denum = this.denum*r.num;
public int Compare(Rational r)
if (this.num*r.denum > r.num*this.denum)
if (this.num*r.denum < r.num*this.denum)
return this.dec = (double)this.num/ this.denum;
public void Print(Rational r)
this.dec = (double)this.num/ this.denum;
this.dec = Math.Round(this.dec,4);
Console.WriteLine(this.dec);
public Rational(int n, int d)
public Rational(Rational r)
this.num = r.num; this.denum = r.denum;
public static void Main(string[] args)
Rational x = new Rational();
Console.Write("numx=");x.num = int.Parse(Console.ReadLine());
Console.Write("denumx=");x.denum = int.Parse(Console.ReadLine());
Rational y = new Rational();
Console.Write("numy=");y.num = int.Parse(Console.ReadLine());
Console.Write("denumy=");y.denum = int.Parse(Console.ReadLine());
Console.WriteLine("Въведете операция:");
Console.WriteLine("1 - събиране (x+y)");
Console.WriteLine("2 - изваждане (x-y)");
Console.WriteLine("3 - умножение (x.y)");
Console.WriteLine("4 - деление (x/y)");
Console.WriteLine("5 - сравнение (x vs y)");
Console.WriteLine("6 - х като десетична дроб");
Console.WriteLine("7 - у като десетична дроб");
var t = int.Parse(Console.ReadLine());
Console.WriteLine("Резултат:");
Console.Write("x+y=");x.Print(y);break;
Console.Write("x-y=");x.Print(y);break;
Console.Write("x*y=");x.Print(y);break;
Console.Write("x/y=");x.Print(y);break;
Console.Write("x vs y={0}", x.Compare(y));break;
Console.Write("x=");x.Print(x);break;
Console.Write("y=");y.Print(y);break;
Console.WriteLine("Некоректни данни");