- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
using System;
namespace GovnoLiEto
{
class SobsnaSamKod
{
public static void Main(string[] args)
{
ComplexNumber x = new ComplexNumber(3, 4);
ComplexNumber y = new ComplexNumber(7, 5);
ComplexNumber z = new ComplexNumber();
z = x + y;
Console.WriteLine("Addition: " + z.real + " + " + z.imaginary + "i");
z = x - y;
Console.WriteLine("Subtraction: " + z.real + " + " + z.imaginary + "i");
z = x * y;
Console.WriteLine("Multiplication: " + z.real + " + " + z.imaginary + "i");
z = x / y;
Console.WriteLine("Division: " + z.real + " + " + z.imaginary + "i");
}
class ComplexNumber
{
public double real, imaginary;
public ComplexNumber(double r = 0, double i = 0)
{
real = r;
imaginary = i;
}
public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real + b.real, a.imaginary + b.imaginary);
}
public static ComplexNumber operator-(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real - b.real, a.imaginary - b.imaginary);
}
public static ComplexNumber operator*(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber((a.real * b.real) - (a.imaginary * b.imaginary), (a.real * b.imaginary) + (b.real * a.imaginary));
}
public static ComplexNumber operator/(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(((a.real * b.real) + (a.imaginary * b.imaginary)) / (b.real * b.real + b.imaginary * b.imaginary), ((a.imaginary * b.real) - (a.real * b.imaginary)) / (b.real * b.real + b.imaginary * b.imaginary));
}
public static bool operator<(ComplexNumber a, ComplexNumber b)
{
return (a.real < b.real) && (a.imaginary < b.imaginary);
}
public static bool operator>(ComplexNumber a, ComplexNumber b)
{
return (a.real > b.real) && (a.imaginary > b.imaginary);
}
/*public static bool operator!>(ComplexNumber a, ComplexNumber b)
{
return (a.real <= b.real) || (a.imaginary <= b.imaginary);
}
public static bool operator!<(ComplexNumber a, ComplexNumber b)
{
return (a.real >= b.real) || (a.imaginary >= b.imaginary);
}*/
public static bool operator<=(ComplexNumber a, ComplexNumber b)
{
return (a.real <= b.real) && (a.imaginary <= b.imaginary);
}
public static bool operator>=(ComplexNumber a, ComplexNumber b)
{
return (a.real >= b.real) && (a.imaginary >= b.imaginary);
}
/*public static bool operator!>=(ComplexNumber a, ComplexNumber b)
{
return (a.real < b.real) || (a.imaginary < b.imaginary);
}
public static bool operator!<=(ComplexNumber a, ComplexNumber b)
{
return (a.real > b.real) || (a.imaginary > b.imaginary);
}*/
public static ComplexNumber operator++(ComplexNumber a)
{
return new ComplexNumber(a.real + 1, a.imaginary + 1);
}
public static ComplexNumber operator--(ComplexNumber a)
{
return new ComplexNumber(a.real - 1, a.imaginary - 1);
}
}
}
}
Комплексные числа. Говно? Судя по всему, да. Дохуя оверлоадов.
Говно. То ли дело J: