using static System.Console;
class Complex {
private int real;
private int imaginary;
public Complex(int i, int j) {
real = i;
imaginary = j;
}
public override bool Equals(object o) => ((Complex)o).real == this.real && ((Complex)o).imaginary == this.imaginary;
public override string ToString() => string.Format("{0} + {1}i", real, imaginary);
public override int GetHashCode() => this.ToString().GetHashCode();
public static bool operator == (Complex x, Complex y) => x.Equals(y);
public static bool operator != (Complex x, Complex y) => !x.Equals(y);
public static Complex operator +(Complex x, Complex y) => new Complex(x.real + y.real, x.imaginary + y.imaginary);
}
public class Program {
public static void Main() {
var x = new Complex(10,20);
WriteLine(x);
var y = new Complex(10,20);
WriteLine(y);
var z = y;
WriteLine(z);
if (x == y) WriteLine("z igual y");
else WriteLine("x diferente y");
if (y != z) WriteLine("y diferente z");
else WriteLine("y igual z");
}
}
//https://pt.stackoverflow.com/q/89577/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwoKY2xhc3MgQ29tcGxleCB7Cglwcml2YXRlIGludCByZWFsOwoJcHJpdmF0ZSBpbnQgaW1hZ2luYXJ5OwoJcHVibGljIENvbXBsZXgoaW50IGksIGludCBqKSB7CgkJcmVhbCA9IGk7CgkJaW1hZ2luYXJ5ID0gajsKCX0KCXB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3QgbykgPT4gKChDb21wbGV4KW8pLnJlYWwgPT0gdGhpcy5yZWFsICYmICgoQ29tcGxleClvKS5pbWFnaW5hcnkgPT0gdGhpcy5pbWFnaW5hcnk7CglwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkgPT4gc3RyaW5nLkZvcm1hdCgiezB9ICsgezF9aSIsIHJlYWwsIGltYWdpbmFyeSk7CglwdWJsaWMgb3ZlcnJpZGUgaW50IEdldEhhc2hDb2RlKCkgPT4gdGhpcy5Ub1N0cmluZygpLkdldEhhc2hDb2RlKCk7CglwdWJsaWMgc3RhdGljIGJvb2wgb3BlcmF0b3IgPT0gKENvbXBsZXggeCwgQ29tcGxleCB5KSA9PiB4LkVxdWFscyh5KTsKCXB1YmxpYyBzdGF0aWMgYm9vbCBvcGVyYXRvciAhPSAoQ29tcGxleCB4LCBDb21wbGV4IHkpID0+ICF4LkVxdWFscyh5KTsKCXB1YmxpYyBzdGF0aWMgQ29tcGxleCBvcGVyYXRvciArKENvbXBsZXggeCwgQ29tcGxleCB5KSA9PiBuZXcgQ29tcGxleCh4LnJlYWwgKyB5LnJlYWwsIHguaW1hZ2luYXJ5ICsgeS5pbWFnaW5hcnkpOwp9CnB1YmxpYyBjbGFzcyBQcm9ncmFtIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgewoJCXZhciB4ID0gbmV3IENvbXBsZXgoMTAsMjApOwoJCVdyaXRlTGluZSh4KTsKCQl2YXIgeSA9IG5ldyBDb21wbGV4KDEwLDIwKTsKCQlXcml0ZUxpbmUoeSk7CgkJdmFyIHogPSB5OwoJCVdyaXRlTGluZSh6KTsKCQlpZiAoeCA9PSB5KSBXcml0ZUxpbmUoInogaWd1YWwgeSIpOwoJCWVsc2UgV3JpdGVMaW5lKCJ4IGRpZmVyZW50ZSB5Iik7CgkJaWYgKHkgIT0geikgV3JpdGVMaW5lKCJ5IGRpZmVyZW50ZSB6Iik7IAoJCWVsc2UgV3JpdGVMaW5lKCJ5IGlndWFsIHoiKTsKCX0KfQoKLy9odHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3EvODk1NzcvMTAx