14 MAYIS 2017
PERŞEMBE
02.28
C++ Fonksiyon Şablonları ile Büyük Sayı

C++ ile birçok farklı yoldan sonuca gidilebilir. Buna güzel bir örneği template mantığını kavramak amacıyla hazırlayacağız.

 

Görevimiz girilen iki değerin (türü ne olursa olsun) arasından büyük olanı çıktı vermek.. Çok basit bir işleme benziyor değil mi? Template mantığını da oturtursak daha iyi olacaktır. Şimdi biz bu problemi 2 farklı yolla çözebiliriz. Birincisi biz hiçbir şekilde türe müdahale etmeden doğrudan girilen iki değeri türü ne olursa olsun karşılaştırırız, ya da bundan farklı olarak özellikle türü belirterek karşılaştırma yapabiliriz.

ÇÖZÜM 1

template <class X, class Y, class Z>
Z fonksiyon(X a, Y b) {
	X max;
	if(a>b) {
		max = a;
	} else {
		max = b;
	}
	return max;
}

int main() {
	cout <<	fonksiyon<double,int,double>(50.1,50.2);
}

Çözümde dikkat edilmesi gereken 3 durum var: X,Y ve Z

Burada Z harfi ile belirtilen fonksiyonun temel veri tipidir ve biz bu veri tipini main fonksiyonu içerisinde fonksiyon isimli fonksiyonumuzu çağırırken 3. parametresinde double olarak belirtmişiz. Bu da virgüllü sayıları kabul ettiğimiz anlamına geliyor. class X ve class Y olarak tanımladığımız diğer iki veri türünü ise fonksiyon isimli fonksiyonumuzun girdileri arasına eklemişiz. Yine main fonksiyonumuza dönersek 1. ve 2. parametrelerine göz atalım. Aslında burada diyoruz ki "Eyy bilgisayar; 50.1 değerini double, 50.2 değerini integer olarak kabul etmelisin." O zaman gerisi teferruat zaten. Bakıyor bilgisayarımız 50.2 değerini integer yapayım diyor ve 50'ye yuvarlıyor. Ee çıktımızda double olan 50.1 değeri 50'den büyük olunca girdimiz 50.2 daha büyük olsa bile veri türü değişince küçülüyor.

Çıktı: 50.1

ÇÖZÜM 2

template <class X>
X fonksiyon(X a, X b) {
	X max;
	if(a>b) {
		max = a;
	} else {
		max = b;
	}
	return max;
}

int main() {
	cout <<	fonksiyon(50.1,50.2);
}

Tek bir veri tipi girdik ve adını X verdik. Bu X isimli veri türünü tüm değişkenlerin başında ve fonksiyonumuzun başında da verdik. Sonuçta bize 50.2 büyüktür dedi. İşlem tamam!

Çıktı: 50.2

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et