Пример #1
0
        public NumSys Subtract(NumSys a, NumSys b)
        {
            double res = Convert.ToDouble(ToDec(a).n) - Convert.ToDouble(ToDec(b).n);

            return(new NumSys {
                n = res > 0 ? res.ToString() : "0", i = 10
            });
        }
Пример #2
0
        public static void Definition()
        {
            string str;
            bool   b = true;

            while (b)
            {
                Console.Write("Введите первое число, а через пробел его систему счисления: ");
                str = Convert.ToString(Console.ReadLine());
                b   = false;
                c1  = new NumSys {
                    n = str.Split(' ')[0]
                };
                try
                {
                    c1.i = Convert.ToInt32(str.Split(' ')[1]);
                }
                catch
                {
                    c1.i = 10;
                }
                for (int i = 0; i < c1.n.Length; i++)
                {
                    if ((!char.IsLetter(c1.n[i]) && Convert.ToInt32(c1.n[i].ToString()) >= c1.i) || c1.n[i] - 55 >= c1.i)
                    {
                        b = true;
                        Console.WriteLine("Число введенно не корректно, повторите ввод.");
                    }
                }
            }
            b = true;
            while (b)
            {
                Console.Write("Введите второе число, а через пробел его систему счисления: ");
                str = Convert.ToString(Console.ReadLine());
                b   = false;
                c2  = new NumSys {
                    n = str.Split(' ')[0]
                };
                try
                {
                    c2.i = Convert.ToInt32(str.Split(' ')[1]);
                }
                catch
                {
                    c2.i = 10;
                }
                for (int i = 0; i < c2.n.Length; i++)
                {
                    if ((!char.IsLetter(c2.n[i]) && Convert.ToInt32(c2.n[i].ToString()) >= c2.i) || c2.n[i] - 55 >= c2.i)
                    {
                        b = true;
                        Console.WriteLine("Число введенно не корректно, повторите ввод.");
                    }
                }
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            for (Definition(); ;)
            {
                Console.Clear();
                Console.WriteLine($"А) {c1.n} в СС {c1.i}");
                Console.WriteLine($"В) {c2.n} в СС {c2.i}");
                Console.WriteLine("Введите код операции для ее исполнения, через пробел укажите желаймую систему счисления.");
                Console.Write("1 - Сумма двух чисел\n2 - Вычитание двух чисел\n3 - Умножение двух чисел\n4 - Деление двух чисел\n5 - Перевод в любую систему счисления\n6 - Отношение двух чисел\n7 - Изменить числа\nВаш код - ");
                string str = Convert.ToString(Console.ReadLine());
                c3 = new NumSys {
                    n = str.Split(' ')[0]
                };
                try
                {
                    c3.i = Convert.ToInt32(str.Split(' ')[1]);
                }
                catch
                {
                    c3.i = 10;
                }
                switch (c3.n)
                {
                case "1":
                    Console.WriteLine($"Сумма двух чисел равна: {c1.ToAnySys(c1.Sum(c1, c2), c3.i).n} в СС {c3.i}");
                    break;

                case "2":
                    Console.WriteLine($"Вычитание двух чисел равно: {c1.ToAnySys(c1.Subtract(c1, c2), c3.i).n} в СС {c3.i}");
                    break;

                case "3":
                    Console.WriteLine($"Умножение двух чисел равно: {c1.ToAnySys(c1.Multiplication(c1, c2), c3.i).n} в СС {c3.i}");
                    break;

                case "4":
                    Console.WriteLine($"Деление двух чисел равно: {c1.ToAnySys(c1.Divide(c1, c2), c3.i).n} в СС {c3.i}");
                    break;

                case "5":
                    Console.WriteLine($"Числа в {c3.i} системе счисления равны: {c1.ToAnySys(c1, c3.i).n}, {c2.ToAnySys(c2, c3.i).n}");
                    break;

                case "6":
                    Console.WriteLine($"Отношения двух чисел таковы:\nA == B - {c1.Eq(c1, c2)}\nA != B - {c1.NoEq(c1, c2)}\nA >= B - {c1.GrEq(c1, c2)}\nA <= B - {c1.LsEq(c1, c2)}\nA > B - {c1.Gr(c1, c2)}\nA < B - {c1.Ls(c1, c2)}");
                    break;

                case "7":
                    Definition();
                    break;
                }
                Console.Write("Для продолжения нажмите любую кнопку.");
                Console.ReadKey();
            }
        }
Пример #4
0
        public NumSys ToAnySys(NumSys a, int newbase)
        {
            if (newbase == 10)
            {
                return new NumSys {
                           n = ToDec(a).n, i = 10
                }
            }
            ;
            string str = null;

            FromDecToAny(Convert.ToInt32(ToDec(a).n), newbase, ref str);
            return(new NumSys {
                n = str, i = newbase
            });
        }
Пример #5
0
        public NumSys ToDec(NumSys a)
        {
            if (a.i == 10)
            {
                return(a);
            }
            double res = 0;

            for (int i = 0; i < a.n.Length; i++)
            {
                if (!char.IsLetter(a.n[i]))
                {
                    res += Convert.ToDouble(a.n[i].ToString()) * Math.Pow(a.i, a.n.Length - i - 1.0);
                }
                else
                {
                    res += (a.n[i] - 55) * Math.Pow(a.i, (double)a.n.Length - i - 1);
                }
            }
            return(new NumSys {
                n = res.ToString(), i = 10
            });
        }
Пример #6
0
 public bool Ls(NumSys a, NumSys b)
 {
     return(Convert.ToDouble(ToDec(a).n) < Convert.ToDouble(ToDec(b).n));
 }
Пример #7
0
 public bool GrEq(NumSys a, NumSys b)
 {
     return(Convert.ToDouble(ToDec(a).n) >= Convert.ToDouble(ToDec(b).n));
 }
Пример #8
0
 public NumSys Divide(NumSys a, NumSys b)
 {
     return(new NumSys {
         n = (Convert.ToInt32(ToDec(a).n) / Convert.ToInt32(ToDec(b).n)).ToString(), i = 10
     });
 }
Пример #9
0
 public NumSys Multiplication(NumSys a, NumSys b)
 {
     return(new NumSys {
         n = (Convert.ToDouble(ToDec(a).n) * Convert.ToDouble(ToDec(b).n)).ToString(), i = 10
     });
 }
Пример #10
0
 public NumSys Sum(NumSys a, NumSys b)
 {
     return(new NumSys {
         n = (Convert.ToDouble(ToDec(a).n) + Convert.ToDouble(ToDec(b).n)).ToString(), i = 10
     });
 }