//KOMPLEX SAYI MATEMATİĞİ //Bu program Hüseyin ÇAKANLI tarafından //08.02.2012 Tarihinde Komplex Sayı Matematiğine Çözüm amaçlı //Operator Override Metodu kullanılarak yazıldı. //Visual Studio 2010 ile test edilmiştir. using System; using System.Collections.Generic; using System.Linq; using System.Text; // Operatörlerin Aşırı Yüklenmesi (Operator Override) namespace OperatorAsiriYukleme { //Komplex Sayı Tanımı //Matematiksel olarak bir komplex sayı = a + bi şeklinde tanımlanan sayılardır. //Komplex sayılarla işlem diğer sayılarla olan işlemlerden biraz daha karmaşıktır. public struct KomplexSayi { public int GercelKisim; public int SanalKisim; public KomplexSayi (int GercelKisim, int SanalKisim) { this.GercelKisim = GercelKisim; this.SanalKisim = SanalKisim; } // (+) operatörünün komplex sayılar için override edilmesi // Dönüş değeride gene komplex sayı tipinde olacaktır. public static KomplexSayi operator +(KomplexSayi c1, KomplexSayi c2) { return new KomplexSayi(c1.GercelKisim + c2.GercelKisim, c1.SanalKisim + c2.SanalKisim); } // ToString(); metodunun komplex sayılarla kullanımı için aşırı yüklenmesi public override string ToString() { if (SanalKisim < 0) { int Sayi = -SanalKisim; return (String.Format("{0} - {1}i", GercelKisim, Sayi)); } else return (String.Format("{0} + {1}i", GercelKisim, SanalKisim)); } // (-) operatörünün komplex sayılar için override edilmesi // Dönüş değeride gene komplex sayı tipinde olacaktır. public static KomplexSayi operator -(KomplexSayi c1, KomplexSayi c2) { return new KomplexSayi(c1.GercelKisim - c2.GercelKisim, c1.SanalKisim - c2.SanalKisim); } // (*) operatörünün komplex sayılar için override edilmesi // Dönüş değeride gene komplex sayı tipinde olacaktır. public static KomplexSayi operator *(KomplexSayi c1, KomplexSayi c2) { return new KomplexSayi(c1.GercelKisim * c2.GercelKisim - c1.SanalKisim*c2.SanalKisim , c1.SanalKisim*c2.GercelKisim + c1.GercelKisim*c2.SanalKisim); } // (==) operatörünün komplex sayılar için override edilmesi // Dönüş değeride True veya False olacak. public static Boolean operator ==(KomplexSayi c1, KomplexSayi c2) { if ((c1.GercelKisim != c2.GercelKisim) && (c1.SanalKisim != c2.SanalKisim)) { return false; } else return true; } // (!=) operatörünün komplex sayılar için override edilmesi // Dönüş değeride True veya False olacak. public static Boolean operator !=(KomplexSayi c1, KomplexSayi c2) { if ((c1.GercelKisim != c2.GercelKisim) && (c1.SanalKisim != c2.SanalKisim)) { return true; } else return false; } public static void Main() { KomplexSayi Sayi1 = new KomplexSayi(2, 3); KomplexSayi Sayi2 = new KomplexSayi(3, 4); KomplexSayi ToplamSonucu = Sayi1 + Sayi2; KomplexSayi CikarmaSonucu = Sayi1 - Sayi2; KomplexSayi CarpmaSonucu = Sayi1 * Sayi2; Boolean EsitMi = (Sayi1 == Sayi2); Boolean EsitDegilMi = (Sayi1 != Sayi2); Console.WriteLine("İlk Komplex Sayımız : {0}", Sayi1); Console.WriteLine("İkinci Komplex Sayımız : {0}", Sayi2); Console.WriteLine(); Console.WriteLine("İki Komplex Sayının Toplamı...... : {0}", ToplamSonucu); Console.WriteLine("İki Komplex Sayının Farkı.........: {0}", CikarmaSonucu); Console.WriteLine("İki Komplex Sayının Çarpımı.......: {0}", CarpmaSonucu); Console.WriteLine(); Console.WriteLine("İki Komplex Sayı Eşit mi?.........: {0}", EsitMi); Console.WriteLine("İki Komplex Sayı Eşit Değil mi?...: {0}", EsitDegilMi); Console.ReadLine(); } } }