public static DoublePolynomList operator +(DoublePolynomList a, DoublePolynomList b) { DoublePolynomList summ = new DoublePolynomList(); DoublePolynomNode sx = summ.Head; int value = 0; DoublePolynomNode ax = (a.First as DoublePolynomNode).Next, bx = (b.First as DoublePolynomNode).Next; //добавляем пока не кончится один из списков while ((ax != a.Head) && (bx != b.Head)) { if (ax.Power == bx.Power) { value = ax.Value + bx.Value; if (value != 0) { sx.Next = new DoublePolynomNode(value, ax.Power); sx.Next.Prev = sx; sx = sx.Next; } ax = ax.Next; bx = bx.Next; } else { if (ax.Power > bx.Power) { sx.Next = new DoublePolynomNode(ax.Value, ax.Power); ax = ax.Next; } else { sx.Next = new DoublePolynomNode(bx.Value, bx.Power); bx = bx.Next; } sx.Next.Prev = sx; sx = sx.Next; } } //добавляем конец a while (ax != a.Head) { sx.Next = new DoublePolynomNode(ax.Value, ax.Power); sx.Next.Prev = sx; sx = sx.Next; ax = ax.Next; } //добавляем конец b while (bx != b.Head) { sx.Next = new DoublePolynomNode(bx.Value, bx.Power); sx.Next.Prev = sx; sx = sx.Next; bx = bx.Next; } //выбрасываем вспомогательный sx.Next = summ.Head; summ.Head.Prev = sx; return summ; }
private void SetA() { try { List<int> lst = new List<int>(); for (int i = 0; i < List_A.Items.Count; i++) lst.Add((int)List_A.Items[i]); PolynomA = new DoublePolynomList(lst); } catch { MessageBox.Show("Ошибка формирования списка", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public MainForm() { InitializeComponent(); DoublePolynomList list = new DoublePolynomList(new List<int>(new int[] { 1, 35, 4, 5, 0, 2 })); }
public DoublePolynomList GetC() { PolynomC = PolynomA + PolynomB; return PolynomC; }
private void toolStripButton1_Click(object sender, EventArgs e) { SetA(); SetB(); PolynomC = PolynomA + PolynomB; }