KostyeFromHelen
13. Тренинг. Вывод комплексных чисел.
11.04.2011 07:20:53

Любое комплексное число может быть представлено как формальная сумма x + iy, где x и y — вещественные числа, i — мнимая единица. [сслыка]

Задача: написать класс, который будет в зависимости от значения x и y выводить комплексное число. Например, если оба значения равны нулю, то мы должны вывести ноль, а не 0 + 0i, если значение x = 0, а y = 5, то мы должны вывести  5i, а не 0 + 5i, и так далее.

Решение:

Создадим отдельный класс Complex:

class Complex
{
double Re; \значение x
double Im; \значение y
public Complex(double x, double y)\банальный конструктор
{
Re = x;
Im = y;
}
public string toString()\метод, который будет решать, как именно нам надо будет выводить число.
{
String s=""; //результат сразу будем помещать в переменную типа стринг
if (Re == 0 & Im == 0)//смотри сноску 1
{
s = "0";
}
else if (Re < 0 & Im < 0)//смотри сноску 2

{
Im = -Im;
s = Re.ToString() + " - " + Im.ToString() + " * i";
}
else if (Re > 0 & Im > 0)//смотри сноску 3

{
s = Re.ToString() + " + " + Im.ToString() + " * i";
}
else if (Re == 0 & Im != 0)//смотри сноску 4
{
s = Im.ToString() + " * i";
}
else if (Re != 0 & Im == 0)//смотри сноску 5
{
s = Re.ToString();
}


return s;//не забываем ключевое слово return
}
}

 

Сноска 1. Если и x и y равны нулю, то нам просто надо вывести ноль. Поэтому не долго думая, приравниваем переменной s текстовое значение равно "0".

Сноска 2. Иначе, если оба значения меньше нуля, то x мы оставляем так же, а у переменной y меняем знак на +, и в нашем шаблоне x + yi - меняем + на -. Это сделано для того, чтобы выражение не получилось вида x + - yi и не было перегружено лишними знаками.

Сноска 3. Иначе, если оба выражения больше нуля, то мы всё оставляем как есть.

Сноска 4. Если x равен нулю, а y не равен нулю, то мы просто убираем x и выводим только y.

Сноска 5. Если же x не равен нулю, а y равен нулю, то мы оставляем только x.

Заметьте, что мы поставили else if, а не просто if. Иначе мы будет проходить по всем 5 if, для чего будет задействовано лишне время. Для нас это конечно не критично, но всё же.

Ну а в main просто перебираем и смотрим, что получается.

Complex a = new Complex(2, 3);

Console.WriteLine(a.toString());//toString название метода класса Complex, а не преобразование типов.




Теги: комплексные числа C#


 



Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.