Exemplo n.º 1
0
        public Rational(int numerator, int denominator)
        {
            try
            {
                if (denominator == 0)
                {
                    string s = "Вы ввели знаменатель равный нулю, нам придётся обнулить число во избежание ошибок";
                    WrongRationalInputException ex = new WrongRationalInputException(s);

                    throw ex;
                }
                if (numerator == 0)
                {
                    denominator = 1;
                }
                int j = 1;
                if (numerator < 0 && denominator < 0)
                {
                    numerator   *= -1;;
                    denominator *= -1;
                }
                if (numerator < 0 && denominator > 0)
                {
                    numerator *= -1;
                    j         *= -1;
                }
                if (numerator > 0 && denominator < 0)
                {
                    denominator *= -1;
                    j           *= -1;
                }
                int c = NOD(numerator, denominator);
                a = numerator / c * j;
                b = denominator / c;
            }
            catch (WrongRationalInputException e)
            {
                a = 0;
                b = 1;
                Console.WriteLine("{0}", e.Message);
            }
        }
Exemplo n.º 2
0
        public static Rational operator /(Rational a, Rational b)
        {
            try
            {
                if (b.Numerator() == 0)
                {
                    string s = "Деление на 0 запрщено, нам придётся обнулить число во избежание ошибок";
                    WrongRationalInputException ex = new WrongRationalInputException(s);

                    throw ex;
                }
                int c = a.Numerator() * b.Denominator();
                int d = a.Denominator() * b.Numerator();
                return(new Rational(c, d));
            }

            catch (WrongRationalInputException e)
            {
                Console.WriteLine("{0}", e.Message);
                return(new Rational(0, 1));
            }
        }
Exemplo n.º 3
0
        public Rational(string s)
        {
            try
            {
                if (s == "")
                {
                    string str = "Вы ввели что-то не то, нам придётся обнулить число во избежание ошибок";
                    WrongRationalInputException ex = new WrongRationalInputException(str);

                    throw ex;
                }
                int i = 0;
                while (i < s.Length && s[i] != '/' && s[i] != ':')
                {
                    if (s[i] != '-' && s[i] != '0' && s[i] != '1' && s[i] != '2' && s[i] != '3' && s[i] != '4' && s[i] != '5' && s[i] != '6' && s[i] != '7' && s[i] != '8' && s[i] != '9')
                    {
                        string str = "Вы ввели что-то не то, нам придётся обнулить число во избежание ошибок";
                        WrongRationalInputException ex = new WrongRationalInputException(str);

                        throw ex;
                    }
                    else if (s[i] == '-' && i != 0)
                    {
                        string str = "Вы ввели что-то не то, нам придётся обнулить число во избежание ошибок";
                        WrongRationalInputException ex = new WrongRationalInputException(str);

                        throw ex;
                    }
                    i++;
                }
                int z = i;
                if (i >= s.Length)
                {
                    a = Convert.ToInt32(s);
                    b = 1;
                    return;
                }
                else if (s[i] == ':' || s[i] == '/')
                {
                    i++;
                    while (i < s.Length)
                    {
                        if (s[i] != '-' && s[i] != '0' && s[i] != '1' && s[i] != '2' && s[i] != '3' && s[i] != '4' && s[i] != '5' && s[i] != '6' && s[i] != '7' && s[i] != '8' && s[i] != '9')
                        {
                            string str = "Вы ввели что-то не то, нам придётся обнулить число во избежание ошибок";
                            WrongRationalInputException ex = new WrongRationalInputException(str);

                            throw ex;
                        }
                        else if (s[i] == '-' && i != z)
                        {
                            string str = "Вы ввели что-то не то, нам придётся обнулить число во избежание ошибок";
                            WrongRationalInputException ex = new WrongRationalInputException(str);

                            throw ex;
                        }
                        i++;
                    }
                }
                if (s[z] == ':')
                {
                    string[] helper = s.Split(':');
                    a = Convert.ToInt32(helper[0]);
                    b = Convert.ToInt32(helper[1]);
                }
                else if (s[z] == '/')
                {
                    string[] helper = s.Split('/');
                    a = Convert.ToInt32(helper[0]);
                    b = Convert.ToInt32(helper[1]);
                }
            }
            catch (WrongRationalInputException e)
            {
                Console.WriteLine("{0}", e.Message);
                Console.WriteLine("Правильный формат ввода: a/b или a:b");
                a = 0;
                b = 1;
            }
        }