Написать консольную программу, реализующую арифметику комплексных чисел - C#
Формулировка задачи:
Написать консольную программу на C#, реализующую арифметику комплексных чисел. Должны быть как минимум определены операторы +, +=, -, -=, *, *=, /, /=, =, допускающие построение арифметических выражений в том виде, в каком они справедливы для double, а также позволяющие в одном выражении смешивать комплексные и вещественные числа.
Определите функции arg, mod, Re, Im
Предусмотреть печать комплексных чисел любым удобным способом
Текстовым представлением комплексного числа считать строки вида a+-bi, где а и b - представление чисел типа double.
Решение задачи: «Написать консольную программу, реализующую арифметику комплексных чисел»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ComplexNumber_Project {
- class Complex {
- //Автосвойства(с private сеттерами)
- public double Real { get; private set; }
- public double Image { get; private set; }
- //Конструктор
- public Complex(double r, double im) {
- Real = r;
- Image = im;
- }
- //Переопределение метода ToString();
- public override string ToString() {
- return string.Format("{0} {1}i", Real, Image);
- }
- //Перегрузка оператора + для двух комплексных чисел
- public static Complex operator +(Complex c1, Complex c2) {
- return new Complex(c1.Real + c2.Real, c1.Image + c2.Image);
- }
- //Перегрузка оператора + для комплексного числа и числа типа int
- public static Complex operator +(Complex c, int n) {
- return new Complex(c.Real + n, c.Image);
- }
- //Перегрузка оператора - для двух комплексных чисел
- public static Complex operator -(Complex c1, Complex c2) {
- return new Complex(c1.Real - c2.Real, c1.Image - c2.Image);
- }
- //Перегрузка оператора - для комплексного числа и числа типа int
- public static Complex operator -(Complex c, int n) {
- return new Complex(c.Real - n, c.Image);
- }
- //Перегрузка оператора * для двух комплексных чисел
- public static Complex operator *(Complex c1, Complex c2) {
- return new Complex(c1.Real * c2.Real, c1.Image * c2.Image);
- }
- //Перегрузка оператора * для комплексного числа и числа типа int
- public static Complex operator *(Complex c, int n) {
- return new Complex(c.Real * n, c.Image);
- }
- //Перегрузка оператора / для двух комплексных чисел
- public static Complex operator /(Complex c1, Complex c2) {
- return new Complex(c1.Real / c2.Real, c1.Image / c2.Image);
- }
- //Перегрузка оператора / для комплексного числа и числа типа int
- public static Complex operator /(Complex c, int n) {
- return new Complex(c.Real / n, c.Image);
- }
- //Перегрузка оператора == для двух комплексных чисел
- public static bool operator==(Complex c1, Complex c2){
- return c1.Equals(c2);
- }
- //Перегрузка оператора != для двух комплексных чисел
- public static bool operator !=(Complex c1, Complex c2) {
- return !c1.Equals(c2);
- }
- //Переопределение Equals()
- public override bool Equals(object obj) {
- if (!(obj is Complex))
- return false;
- return (((this.Real.CompareTo(((Complex)obj).Real))==0) &&
- ((this.Image.CompareTo(((Complex)obj).Image)))==0);
- }
- //Переопределение GetHashCode()
- public override int GetHashCode() {
- return this.ToString().GetHashCode();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д