Создать класс для хранения обычных дробей - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, не могу решить задачу. Условие: Создать класс для хранения обычных дробей. Запрограммировать метод сокращения дроби. Предусмотреть исключительные ситуации.

Решение задачи: «Создать класс для хранения обычных дробей»

textual
Листинг программы
class Fract
    {
        public int Num { get; set; }
        public int Denom { get; set; }
        public Fract(int numerator, int denominator)
        {
            Num = numerator;
            Denom = denominator;
        }
        public Fract(string fraction)
        {
            int slash = fraction.IndexOf('/');
            Num = int.Parse(fraction.Substring(0, slash));
            Denom = int.Parse(fraction.Substring(slash + 1, fraction.Length - slash - 1));
        }
 
        public static Fract Reduce(Fract fraction)
        {
            int nod = Nod(fraction.Num, fraction.Denom);
            if (nod != 0)
            {
                fraction.Num /= nod;
                fraction.Denom /= nod;
            }
            return fraction;
        }
        public static int Nod(int n, int d)
        {
            int temp;
            n = Math.Abs(n);
            d = Math.Abs(d);
            while (d != 0 && n != 0)
            {
                if (n % d > 0)
                {
                    temp = n;
                    n = d;
                    d = temp % d;
                }
                else break;
            }
            if (d != 0 && n != 0) return d;
            else return 0;
        }
 
        public static Fract operator -(Fract a)
        {
            a.Num *= -1;
            return a;
        }
 
        public static Fract operator +(Fract f1, Fract f2)
        {
            return Reduce(new Fract(f1.Num * f2.Denom + f2.Num * f1.Denom, f1.Denom * f2.Denom));
        }
 
        public static Fract operator -(Fract f1, Fract f2)
        {
            return Reduce(new Fract(f1.Num * f2.Denom - f2.Num * f1.Denom, f1.Denom * f2.Denom));
        }
 
        public static Fract operator *(Fract f1, Fract f2)
        {
            return Reduce(new Fract(f1.Num * f2.Num, f1.Denom * f2.Denom));
        }
 
        public static Fract operator /(Fract f1, Fract f2)
        {
            return Reduce(new Fract(f1.Num * f2.Denom, f1.Denom * f2.Num));
        }
        public override string ToString()
        {
            return Num.ToString() + "/" + Denom.ToString();
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы