Реализовать приложение "Калькулятор для обыкновенных дробей" - C#

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

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

Реализовать приложение "Калькулятор для обыкновенных дробей". Спроектировать и реализовать класс Обыкновенная дробь. С помощью данного класса можно выполнять арифметические действия над обыкновенными дробями. Использовать данный класс для создания приложения "калькулятора обыкновенных дробей", в котором должны быть доступны операции сложения, вычитания, умножения и деления для обыкновенных дробей, введенные пользователем. Результатом всех операций должна быть обыкновенная дробь. Например: 1/3 + 1/3 = 2/3

Решение задачи: «Реализовать приложение "Калькулятор для обыкновенных дробей"»

textual
Листинг программы
using System;
 
namespace ConsoleApplication171
{
    class Program
    {
        static void Main(string[] args)
        {
            var f1 = new Fraction(3, 8);
            var f2 = new Fraction(5, 6);
 
            var f3 = f1 + f2;
 
            Console.WriteLine("{0} + {1} = {2}", f1, f2, f3);
            Console.ReadLine();
        }
    }
 
    public struct Fraction
    {
        public int N;
        public int D;
 
        public Fraction(int numerator, int denominator)
        {
            N = numerator;
            D = denominator;
        }
 
        public Fraction(int num) : this(num, 1)
        {
        }
 
        public override string ToString()
        {
            return string.Format("{0}/{1}", N, D);
        }
 
        public static Fraction operator +(Fraction f1, Fraction f2)
        {
            return new Fraction(f1.N * f2.D + f2.N * f1.D, f1.D * f2.D).Normalization();
        }
 
        public static Fraction operator *(Fraction f1, Fraction f2)
        {
            return new Fraction(f1.N * f2.N, f1.D * f2.D).Normalization();
        }
 
        public static Fraction operator -(Fraction f1, Fraction f2)
        {
            return new Fraction(f1.N * f2.D - f2.N * f1.D, f1.D * f2.D).Normalization();
        }
 
        public static Fraction operator -(Fraction f1)
        {
            return new Fraction(-f1.N, f1.D).Normalization();
        }
 
        public static Fraction operator /(Fraction f1, Fraction f2)
        {
            return new Fraction(f1.N * f2.D, f1.D * f2.N).Normalization();
        }
 
        public Fraction Normalization()
        {
            var n = Math.Abs(N);
            var d = Math.Abs(D);
            var nod = NOD(n, d);
            var sign = Math.Sign(N*D);
            return new Fraction(sign * n / nod, d / nod);
        }
 
        static int NOD(int a, int b)
        {
            while (a > 0 && b > 0)
                if (a > b)
                    a %= b;
                else
                    b %= a;
 
            return a + b;
        }
    }
}

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


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

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

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