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

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

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

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

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

textual
Листинг программы
  1. class Fract
  2.     {
  3.         public int Num { get; set; }
  4.         public int Denom { get; set; }
  5.         public Fract(int numerator, int denominator)
  6.         {
  7.             Num = numerator;
  8.             Denom = denominator;
  9.         }
  10.         public Fract(string fraction)
  11.         {
  12.             int slash = fraction.IndexOf('/');
  13.             Num = int.Parse(fraction.Substring(0, slash));
  14.             Denom = int.Parse(fraction.Substring(slash + 1, fraction.Length - slash - 1));
  15.         }
  16.  
  17.         public static Fract Reduce(Fract fraction)
  18.         {
  19.             int nod = Nod(fraction.Num, fraction.Denom);
  20.             if (nod != 0)
  21.             {
  22.                 fraction.Num /= nod;
  23.                 fraction.Denom /= nod;
  24.             }
  25.             return fraction;
  26.         }
  27.         public static int Nod(int n, int d)
  28.         {
  29.             int temp;
  30.             n = Math.Abs(n);
  31.             d = Math.Abs(d);
  32.             while (d != 0 && n != 0)
  33.             {
  34.                 if (n % d > 0)
  35.                 {
  36.                     temp = n;
  37.                     n = d;
  38.                     d = temp % d;
  39.                 }
  40.                 else break;
  41.             }
  42.             if (d != 0 && n != 0) return d;
  43.             else return 0;
  44.         }
  45.  
  46.         public static Fract operator -(Fract a)
  47.         {
  48.             a.Num *= -1;
  49.             return a;
  50.         }
  51.  
  52.         public static Fract operator +(Fract f1, Fract f2)
  53.         {
  54.             return Reduce(new Fract(f1.Num * f2.Denom + f2.Num * f1.Denom, f1.Denom * f2.Denom));
  55.         }
  56.  
  57.         public static Fract operator -(Fract f1, Fract f2)
  58.         {
  59.             return Reduce(new Fract(f1.Num * f2.Denom - f2.Num * f1.Denom, f1.Denom * f2.Denom));
  60.         }
  61.  
  62.         public static Fract operator *(Fract f1, Fract f2)
  63.         {
  64.             return Reduce(new Fract(f1.Num * f2.Num, f1.Denom * f2.Denom));
  65.         }
  66.  
  67.         public static Fract operator /(Fract f1, Fract f2)
  68.         {
  69.             return Reduce(new Fract(f1.Num * f2.Denom, f1.Denom * f2.Num));
  70.         }
  71.         public override string ToString()
  72.         {
  73.             return Num.ToString() + "/" + Denom.ToString();
  74.         }
  75.     }

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


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

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

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы