Exemplo n.º 1
0
 public void Insert(Scalenum s)//Вставка одного числа в центральную часть другого числа:
 {//s - число, которое вставляем
     if (s.q != q)
         Console.WriteLine("Числа должны иметь одинаковое основание системы счисления.");
     List digits1 = new List();//Список ненулевых цифр результата
     List degrees1 = new List();//Список соответствующих степеней результата
     for (int i = 0; i < digits.Length; i++)//Перебираем все цифры исходного числа
     {
         if (degrees[i] <= degrees[digits.Length - 1] / 2)// Если цифра в первой половине
         {
             digits1.Push(digits[i]);//Добавляем ее
             degrees1.Push(degrees[i]);
             if (degrees[i + 1] > degrees[degrees.Length - 1] / 2)//Если это последняя цифра в первой половине
             {
                 for (int j = 0; j < s.degrees.Length; j++)//Вставляем число s
                 {
                     digits1.Push(s.digits[j]);
                     degrees1.Push(s.degrees[j] + degrees[degrees.Length - 1] / 2 + 1);//Так как степень увеличивается на degrees[degrees.Count - 1] / 2 + 1
                 }
             }
         }
         else//Если цифра во второй половине
         {
             digits1.Push(digits[i]);//Добавляем ее
             degrees1.Push(degrees[i] + s.degrees[s.degrees.Length - 1] + 1);//Так как смещено на s.degrees[s.degrees.Count - 1] + 1
         }
     }
     //digits.Clear();
     digits = digits1;//Сохранение в исходный
     //degrees.Clear();
     degrees = degrees1;//Сохранение в исходный
 }
Exemplo n.º 2
0
        public List degrees;//Список степеней соответствующих цифр

        public Scalenum(int q = 10)//Конструктор класса с заданным основанием системы счисления:
        {//q - Основание системы счисления
            this.q = q;
            digits = new List();
            degrees = new List();
        }