Сравняване на рац. числа

 avatar
unknown
csharp
2 years ago
2.3 kB
4
Indexable
using System;

namespace RationalCalc
{ 
    class Rational
    { 
        int num;
        int den;
        public Rational(Rational r)
        {
            this.num = r.num;
            this.den = r.den;
        }
        public Rational(int n, int d)
        {
            this.num = n;
            this.den = d;
            normalize();
        }
        public double getDec()
        {
            return (double)this.num / this.den;
        }
        public string print()
        {
            return string.Format("{0}/{1}", this.num, this.den);
        }
        public Rational multi(Rational r)
        {
            return new Rational(this.num * r.num, this.den *= r.den);
        }
        public Rational dev(Rational r)
        {
            return new Rational(this.num * r.den, this.den * r.num);
        }
        public Rational sum(Rational r)
        {
            int a = this.num * r.den + r.num * this.den;
            int b = this.den * r.den;
            return new Rational(a, b);
        }
        public Rational sub(Rational r)
        {
            int a = this.num * r.den - r.num * this.den;
            int b = this.den * r.den;
            return new Rational(a, b);
        }
        public int compare(Rational r)
        {
            int a = this.num * r.den;
            int b = r.num * this.den;
            if (a > b)
            {
                return 1;
            }
            else if (a < b)
            {
                return -1;
            }
            else
            {
                return 0;
            }
        }

        void normalize()
        {
            int a = Math.Abs(this.num);
            int b = Math.Abs(this.den);
            while (a != b)
            {
                if (a > b)
                {
                    a -= b;
                }
                else
                {
                    b -= a;
                }
            }
            this.num /= a;
            this.den /= b;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Rational a = new Rational(3, 2);
            Rational b = new Rational(6, 4);
            Console.WriteLine(a.compare(b));
        }
    }
}
Editor is loading...