//KOMPLEX SAYI MATEMATİĞİ
//Bu program Hüseyin ÇAKANLI tarafından
//08.02.2012 Tarihinde Komplex Sayı Matemeatiğine
//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);
// Add two Complex objects (num1 and num2) through the
// overloaded plus operator:
KomplexSayi ToplamSonucu = Sayi1 + Sayi2;
KomplexSayi CikarmaSonucu = Sayi1 - Sayi2;
KomplexSayi CarpmaSonucu = Sayi1 * Sayi2;
Boolean EsitMi = (Sayi1 == Sayi2);
Boolean EsitDegilMi = (Sayi1 != Sayi2);
// Print the numbers and the sum using the overriden ToString method:
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();
}
}
}