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;//Сохранение в исходный }
public List degrees;//Список степеней соответствующих цифр public Scalenum(int q = 10)//Конструктор класса с заданным основанием системы счисления: {//q - Основание системы счисления this.q = q; digits = new List(); degrees = new List(); }