using System;
public struct Complex
{
public int real;
public int imaginary;
public Complex(int real, int imaginary)
{
this.real = real;
this.imaginary = imaginary;
}
// Declare which operator to overload (+), the types
// that can be added (two Complex objects), and the
// return type (Complex):
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
}
// Override the ToString method to display an complex number in the suitable format:
public override string ToString()
{
return(String.Format("{0} + {1}i", real, imaginary));
}
public static void Main()
{
Complex num1 = new Complex(2,3);
Complex num2 = new Complex(3,4);
// Add two Complex objects (num1 and num2) through the
// overloaded plus operator:
Complex sum = num1 + num2;
// Print the numbers and the sum using the overriden ToString method:
Console.WriteLine("First complex number: {0}",num1);
Console.WriteLine("Second complex number: {0}",num2);
Console.WriteLine("The sum of the two numbers: {0}",sum);
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIHN0cnVjdCBDb21wbGV4IAp7CiAgIHB1YmxpYyBpbnQgcmVhbDsKICAgcHVibGljIGludCBpbWFnaW5hcnk7CgogICBwdWJsaWMgQ29tcGxleChpbnQgcmVhbCwgaW50IGltYWdpbmFyeSkgCiAgIHsKICAgICAgdGhpcy5yZWFsID0gcmVhbDsKICAgICAgdGhpcy5pbWFnaW5hcnkgPSBpbWFnaW5hcnk7CiAgIH0KCiAgIC8vIERlY2xhcmUgd2hpY2ggb3BlcmF0b3IgdG8gb3ZlcmxvYWQgKCspLCB0aGUgdHlwZXMgCiAgIC8vIHRoYXQgY2FuIGJlIGFkZGVkICh0d28gQ29tcGxleCBvYmplY3RzKSwgYW5kIHRoZSAKICAgLy8gcmV0dXJuIHR5cGUgKENvbXBsZXgpOgogICBwdWJsaWMgc3RhdGljIENvbXBsZXggb3BlcmF0b3IgKyhDb21wbGV4IGMxLCBDb21wbGV4IGMyKSAKICAgewogICAgICByZXR1cm4gbmV3IENvbXBsZXgoYzEucmVhbCArIGMyLnJlYWwsIGMxLmltYWdpbmFyeSArIGMyLmltYWdpbmFyeSk7CiAgIH0KICAgLy8gT3ZlcnJpZGUgdGhlIFRvU3RyaW5nIG1ldGhvZCB0byBkaXNwbGF5IGFuIGNvbXBsZXggbnVtYmVyIGluIHRoZSBzdWl0YWJsZSBmb3JtYXQ6CiAgIHB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKQogICB7CiAgICAgIHJldHVybihTdHJpbmcuRm9ybWF0KCJ7MH0gKyB7MX1pIiwgcmVhbCwgaW1hZ2luYXJ5KSk7CiAgIH0KCiAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgCiAgIHsKICAgICAgQ29tcGxleCBudW0xID0gbmV3IENvbXBsZXgoMiwzKTsKICAgICAgQ29tcGxleCBudW0yID0gbmV3IENvbXBsZXgoMyw0KTsKCiAgICAgIC8vIEFkZCB0d28gQ29tcGxleCBvYmplY3RzIChudW0xIGFuZCBudW0yKSB0aHJvdWdoIHRoZQogICAgICAvLyBvdmVybG9hZGVkIHBsdXMgb3BlcmF0b3I6CiAgICAgIENvbXBsZXggc3VtID0gbnVtMSArIG51bTI7CgogICAgIC8vIFByaW50IHRoZSBudW1iZXJzIGFuZCB0aGUgc3VtIHVzaW5nIHRoZSBvdmVycmlkZW4gVG9TdHJpbmcgbWV0aG9kOgogICAgICBDb25zb2xlLldyaXRlTGluZSgiRmlyc3QgY29tcGxleCBudW1iZXI6ICB7MH0iLG51bTEpOwogICAgICBDb25zb2xlLldyaXRlTGluZSgiU2Vjb25kIGNvbXBsZXggbnVtYmVyOiB7MH0iLG51bTIpOwogICAgICBDb25zb2xlLldyaXRlTGluZSgiVGhlIHN1bSBvZiB0aGUgdHdvIG51bWJlcnM6IHswfSIsc3VtKTsKIAogICB9Cn0=