Exemple #1
0
        public void ShowCCInto10cc(NumberCC a)
        {
            string[] content = new string[number.Length];
            string[] rank    = new string[number.Length];
            for (int i = 0; i < number.Length; i++)
            {
                rank[i] = (number.Length - 1 - i).ToString();
            }
            for (int i = 0; i < number.Length; i++)
            {
                content[i] = number[i].ToString();
            }

            double n = 0;

            for (int i = 0; i < number.Length; i++)
            {
                if (i != 0)
                {
                    Console.Write("+");
                }
                Console.Write($"{content[i]}*({a.ccBefore}^{rank[i]})");
                n += a.numericalForm[i] * Math.Pow(a.ccBefore, int.Parse(rank[i]));
                if (i == number.Length - 1)
                {
                    Console.Write($"={n}");
                }
            }
            Console.Write("\n");
        }
Exemple #2
0
        static void ConvertToRomanN()
        {
            NumberCC a = new NumberCC {
            };
            Table t    = new Table {
            };

            a.GetCCBefore();
            a.GetNumberBefore();
            a.ConvertToRomanNumerals();

            Console.WriteLine("---Перевод в римскую систему счисления---");
            if (a.ccBefore != 10)
            {
                Console.WriteLine("Сначала переводим в 10сс");
                ConvertTo10CC(t, a);
            }
            Console.WriteLine("Римляне, как известно, использовали для записи числа латинские буквы.\n" +
                              "Считается, что римская система счисления является классическим примером непозиционной системы счисления," +
                              " то есть такой системы счисления, в которой величина, которую обозначает цифра, не зависит от положения в числе.\n" +
                              "Напомним, что в римской системе счисления I обозначает 1, V обозначает 5, X — 10, L — 50, C — 100, D — 500, M — 1000,Ú - 5000" +
                              ".\nНапример, число 3 в римской системе счисления будет обозначаться как III.\n" +
                              "Однако на самом деле не все так просто, и она не является полностью непозиционной системой счисления," +
                              " потому что в римской системе счисления есть дополнительное правило, которое влияет на величину," +
                              " которую обозначает цифра, в зависимости от ее положения.\n" +
                              "Правило это запрещает употреблении одной и той же цифры более 3 раз подряд, поэтому три это III, а четыре это уже IV," +
                              " и I(1), стоящая перед большей цифрой V(5), обозначает вычитание, то есть фактически равна -1.\n" +
                              "То есть мы разделяем число на разряды(тысячи,сотни,десятки,единицы) и заменяем их на римские эквиваленты:");
            t.ShowRomanN(a);
            Console.WriteLine($"{a.numberBefore}{a.ccBefore}={a.romanNumber}");
        }
Exemple #3
0
        public void ShowRomanN(NumberCC a)
        {
            var listNum   = new List <string> {
            };
            var listRoman = new List <string> {
            };

            listNum.Add("Разряды");
            listRoman.Add("Римские");

            boxWidth  = a.numberAfter.Length + 1;
            cellWidth = 7;

            int del = 1000;

            for (int i = 6; i >= 0; i -= 2)
            {
                int n = a.number10CC / del;
                listNum.Add(n.ToString());
                int temp = a.number10CC;
                if (n != 0)
                {
                    listRoman.Add(NumberCC.GetRomanNumber(n, i));
                }
                temp = temp % del;
                del /= 10;
            }
            WriteBoxLine('┌', '─', '┬', '┐');
            WriteBoxLine('│', ' ', '│', listNum);
            WriteBoxLine('├', '─', '┼', '┤');
            WriteBoxLine('│', ' ', '│', listRoman);
            WriteBoxLine('└', '─', '┴', '┘');
        }
Exemple #4
0
        public void Show10ccIntoRequiredCC(NumberCC a)
        {
            //вычисление кол-ва символов
            //численный вид
            var listDel     = new List <string> {
            };
            var listOstatok = new List <string> {
            };

            listDel.Add("Число");
            listOstatok.Add("Остаток");

            int temp = a.number10CC;

            listDel.Add(temp.ToString());
            listOstatok.Add((temp % a.ccAfter).ToString());
            do
            {
                temp /= a.ccAfter;
                listDel.Add(temp.ToString());
                listOstatok.Add((temp % a.ccAfter).ToString());
            } while (temp >= a.ccAfter);
            boxWidth  = a.numberAfter.Length + 1;
            cellWidth = 7;
            WriteBoxLine('┌', '─', '┬', '┐');
            WriteBoxLine('│', ' ', '│', listDel);
            WriteBoxLine('├', '─', '┼', '┤');
            WriteBoxLine('│', ' ', '│', listOstatok);
            WriteBoxLine('└', '─', '┴', '┘');

            Console.Write($"\n{a.number10CC} в 10 в {a.ccAfter}={a.numberAfter} в {a.ccAfter}");
        }
Exemple #5
0
 static void ConvertToNcc(Table t, NumberCC a)
 {
     Console.WriteLine("Переводим в нужную СС:");
     Console.WriteLine("-разделить число на основание переводимой системы счисления");
     Console.WriteLine("-найти остаток от деления целой части числа");
     Console.WriteLine("-записать все остатки от деления в обратном порядке");
     t.Show10ccIntoRequiredCC(a);
 }
Exemple #6
0
        static void ConvertTo10CC(Table t, NumberCC a)
        {
            Console.WriteLine("Перевеводим число в десятичную систему счисления");
            Console.WriteLine($"Для перевода в десятичную систему счисления необходимо найти сумму произведений основания {a.ccBefore} на соответствующую степень разряда");

            t.GetTableInfo(a.numberBefore);
            t.ShowRank();
            Console.Write($"{a.numberBefore} в {a.ccBefore}сс в {a.ccAfter}cc=");
            t.ShowCCInto10cc(a);
        }
Exemple #7
0
        static void ConvertNumberToRequiredCC()
        {
            NumberCC a = new NumberCC {
            };

            a.GetInfoCC();
            var t = new Table {
            };

            if (a.ccBefore != 10)
            {
                Console.WriteLine("---Перевод из одной ситемы счисления в другую---");
                ConvertToNcc(t, a);
                ConvertTo10CC(t, a);
            }
            else
            {
                ConvertTo10CC(t, a);
            }
        }