Перегрузить операции сложения, вычитания, деления и умножения комплексных чисел - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Помогите разобраться с перегрузкой метода. Суть в том, что необходимо перегрузить операции сложения, вычитания, деления и умножения комплексных чисел. Как складывать,..., умножать комплексные числа знаю. Код для этого есть. (выложил только сложение)
a1 = Convert.ToDouble(textBox3.Text);
b1 = Convert.ToDouble(textBox4.Text);
a2 = Convert.ToDouble(textBox5.Text);
b2 = Convert.ToDouble(textBox6.Text);
a3 = a1 + a2;
b3 = b1 + b2;
// вывод результата
Порыл на эту тему в интернете и вот что у меня получилось:
public static complex_number operator +(complex_number w, complex_number e)
       {
           complex_number tlb = new complex_number();
           tlb.a3 = w.a1 + w.a2;
           tlb.b3 = e.b1 + e.b2;
           return tlb;
        }
Сомневаюсь что это верно. Как исправить? Глупый вопрос, наверно, но как мне потом это применить? Ранее с перегрузками не работал, так что сильно не ругайтесь, пожалуйста. Заранее спасибо.

Решение задачи: «Перегрузить операции сложения, вычитания, деления и умножения комплексных чисел»

textual
Листинг программы
    class complex_number
    {
        double x, y;
 
        public double X { get { return x; } }
        public double Y { get { return y; } }
 
        public complex_number(double x=0, double y=0)
        {
            this.x = x;
            this.y = y;
        }
 
        public string ArifToGrigAndPok()
        {
            double r, t, phi = 0;
            string str = string.Empty;
            r = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2));
            if (x > 0)
            {
                t = y / x;
                phi = Math.Atan(y / x) * 180 / Math.PI;
                str = "arctg (" + t.ToString();
            }
            else
                if (x < 0 && y >= 0)
                {
                    t = y / x;
                    phi = Math.PI + Math.Atan(y / x) * 180 / Math.PI;
                    str = "ПЂ + arctg (" + t.ToString();
 
                }
                else
                    if (x < 0 && y < 0)
                    {
                        t = y / x;
                        phi = -Math.PI + Math.Atan(y / x) * 180 / Math.PI;
                        str = "-ПЂ + arctg (" + t.ToString();
                    }
                    else
                        if (x == 0 && y > 0)
                        {
                            t = y / x;
                            phi = Math.PI / 2;
                            str = "ПЂ/2";
                        }
                        else
                            if (x == 0 && y < 0)
                            {
                                t = y / x;
                                phi = -Math.PI / 2;
                                str = "-ПЂ/2";
                            }
            return "Геометрическая форма: \nz=" + Math.Round(r, 2).ToString() + "(cos(" + str + "))+i " + "sin(" + str + "))\n" +
            "Тригонометрическая форма: \nz=e^(i " + str + "))";            
        }
 
        public static complex_number operator +(complex_number n1, complex_number n2)
        {           
            return new complex_number(n1.X + n2.X, n1.Y+n2.Y);;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы