Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- public class Rational
- {
- int numerator;
- int denomenator;
- private Rational(int n, int d)
- {
- if (n > 0 && d < 0)
- {
- d = -d;
- n = -n;
- }
- for (int i = 2; i < d; i++)
- {
- if (n % i == 0 && d % i == 0)
- {
- n /= i;
- d /= i;
- }
- }
- numerator = n;
- denomenator = d;
- }
- public static Rational operator +(Rational a, Rational b)
- {
- int numer = a.numerator * b.denomenator + b.numerator * a.denomenator;
- int denumer = a.denomenator * b.denomenator;
- return new Rational(numer, denumer);
- }
- public static Rational operator -(Rational a, Rational b)
- {
- int numer = a.numerator * b.denomenator - b.numerator * a.denomenator;
- int denumer = a.denomenator * b.denomenator;
- return new Rational(numer, denumer);
- }
- public static Rational operator *(Rational a, Rational b)
- {
- return new Rational(a.numerator * b.numerator, a.denomenator * b.denomenator);
- }
- public static Rational operator /(Rational a, Rational b)
- {
- return new Rational(a.numerator * b.denomenator, a.denomenator * b.numerator);
- }
- public static Rational Parse(string input)
- {
- string[] inputArr = input.Split('/');
- int a;
- int b = 1;
- if (int.TryParse(inputArr[0], out a))
- {
- if (inputArr.Length == 2)
- {
- if (!int.TryParse(inputArr[1], out b))
- {
- throw new ArgumentException();
- }
- }
- return new Rational(a, b);
- }
- throw new ArgumentException();
- }
- public override string ToString()
- {
- if (numerator % denomenator == 0) return (numerator / denomenator).ToString();
- return numerator.ToString() + '/' + denomenator;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement