Binomial Teoremi’nin C Diliyle Gerçeklenmesi


Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği bölümünde Programlamaya giriş dersinde Selçuk hocamız dönem projesi olarak Binomial (iki terimli) teoreminin C diliyle gerçeklenmesini vermiş. 1. sınıf arkadaşlara bir faydam dokunsun diye bir saatimi ayırıp bir programcık yazdım. Geliştirilmeye açık elbette :) Programın detayları için tıklayın.

Programımızın kodlarına geçmeden önce uyarılarımızı yapalım:
– Kodlar 0 – 12 tam sayıları arasında çalışmaktadır.
– Hocamız sizlerden Negatif tam sayılar için de çalışmasını isteyebilir.Bunun için çıktınız 1 / (sayının pozitif açılımı) şeklinde olmalıdır.
– integer sayı tipi overflow olmaktadır 12’den sonraki sayılar için. Bu yüzden kendiniz bir structure yazmanız gerekmektedir. Çünkü hocamız değer olarak 100 girerse programınızda sayı tipleriniz long double bile olsa yanlış çalışacaktır.
– Yazdığım kodlarda recursive programlama mantığı vardır, ne olduğunu anlamak için biraz kafa patlatmanız gerekebilir :)

Kodlara geçelim:

#include  // gerekli kütüphaneleri
#include  // include ediyoruz
#include 

 int faktoriyel( int n) // faktöriyel hesaplamak için fonksiyon yazıyoruz
{
 int f;
if ( n<1 ) return 1;
f=n*faktoriyel(n-1); 
// recursive (öz yinelemeli programlama mantığıyla faktöriyel hesabı yapıyoruz)
return f;}

 int kombinasyon( int n, int r) // binom açılımında katsayı için 
{                                      // kombinasyon kullanıyoruz
 int k;
k = faktoriyel(n) / (faktoriyel(r) * faktoriyel(n - r)); 
//kombinasyonun formülü gereği faktöriyel hesabı yapıyoruz
return k;}

int main() {
	int a;
	top:
	printf("(x+y)^n ifadesinde n'i giriniz: ");
	scanf("%d",&a); // kullanıcıdan üssü alıyoruz
	
	if(a==0)
	{
	printf("1"); // girilen üs sıfır ise sonuç 1'dir.
	}
	else
	{
	int b=a;
	for(int i=0;i

Benden bu kadar, yardım isteyen yorum yapsın :)
parayla ödev falan yapmıyorum boşuna teklif etmeyin 😛

4 comments on “Binomial Teoremi’nin C Diliyle Gerçeklenmesi

  1. Öncelikle onca iş güç arasında bu işe de el attığın için tebrikler.
    Benim takıldığım ufak bir nokta var.

    for (us=n; us>=0;–us) {
    printf(“%u “, katsayi);
    katsayi = katsayi * us / terim_sayisi;
    ++terim_sayisi;
    }

    ifadesi ile 0-12 arasına bağlı kalmadan istediğimiz kadar büyük bir sayının
    pascal açılımını bulabiliyoruz.(elbette kodun en üstünde int terim_sayisi= 1;
    unsigned katsayi= 1; setlemelerini yaptıktan sonra) Ancak x^ ve y^lü formatı
    bastırmaya gelince aynı katsayıları baş tarafa bastırtmakta şahsen zorluk çektim ben.
    Bunu nasıl yapabiliriz?

    Selamlar.

  2. öncelikle rica ederim, programı yazması yarım saat gibi bir vaktimi aldı,
    faktöriyel ve kombinasyon fonksiyonlarını başka yerden aldım çünkü :)
    yukarda verdiğim örnekte ben kombinasyon ile katsayıyı hesaplatıp x ve y üslü
    terimlerden önce ekrana bastırıyorum. for döngüsünde müsait bir yere ekleyebilirsin.
    denemeleri yapıp bulabilirsin bence.
    benim kodda kombinasyon fonksiyonuyla katsayıyı hesaplayıp bastırdıktan sonra:
    printf(“%d * “,kombinasyon(a,i));
    x’li ve yli terimlerin üslerini ekrana bastırıyorum:
    printf(“x^%d * y^%d “,b,i);

    unsigned kısmına gelince unsigned data tipinin de bir sınırı var o yüzden
    bir yerden sonra overflow verip hatalı sonuçlar üretecek.
    o yüzden daha global ve sonsuz bir structure yazmanızda fayda var.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir