IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   Pi Hesaplama (https://www.ircforumlari.net/c-ve-c/456486-pi-hesaplama.html)

aSi 25 Şubat 2012 19:42

Pi Hesaplama
 
Girilen hassasiyete göre pi sayısını bulan program.
Elimden geldiğince anlatmaya çalıştım.İyi Çalışmalar :)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:

#include<stdio.h>
#include<conio.h>



main()                                  //Programın mantığı pozitifleri ve negatifleri kendi aralarında toplayıp..
{    int adet,i=0;                    //..birbirlerinden cikarmak.         
      float negatiftoplam=0;            //  4    4    4    4    4    4     
      float payda=1,pozitiftoplam=0;    // --- - --- + --- - --- + --- - --- ...
      printf("Hassasiyeti Giriniz : "); //  1    3    5    7    9    11 
      scanf("%d",&adet); //int değerinde örneğin 4/2 ve 5/2 sayıları aynı değerlere (2) denk geliyordu.Bu problemde bunu kullanacağız.
      while(i<(adet+1)/2)//2şer 2şer gruplar hallinde oldugu ıcın (adet+1)/2 denklemini kullanırız.
      {                  //(Sebebi tek-çift sayısının kontrol etmek için adet+1 yazdık.) 
        pozitiftoplam+=4/payda;//her şekilde ilk değer artacağı için kontrol etmiyoruz.
        if((i+1)!=(adet+2)/2)//döngünün son seferinde negatif değeri alıp alamayacagının kontrolunu yapıyoruz.(Anlatım en aşağıda)
        negatiftoplam+=4/(payda+2);//aradeğerlerde paydanın 2 fazlası artar.basta payda=1'di.negatifi hesaplarken payda+2 yi yani..
                                  // ..3'ü elde ederiz.                       
        payda+=4;                //payda 4 artar ve 5 olur. bir dahaki döngüde de negatif için payda +2 yani 7 olacak.
        printf("Pozitif Toplam = %f  Negatif Toplam = %f\n",pozitiftoplam,negatiftoplam);
        i++;//kaç defa yapılacağı kontrolü
      }
      printf("\n\nGenel Toplam=%f",pozitiftoplam - negatiftoplam);//farkını yazdırırız.
      getch();
}

//((i+1)!=(adet+2)/2)  (i+1) döngünün son döndüğü aşama.
//adet+2 dememızın sebebi az önce bahsettiğim 4/2 ve 5/2 olayı.
//+2 dediğimizde bu değerler                  5/2 ve 6/2 olacak ve döngü negatif sayiyi alıp almayacağını kontrol edecek.
//yani gruplar haline çalıştıgımızdan;

// 3 değerini girersek;              4 değerini girersek;  şeklinde olur ve -4/7'i de dahil eder.


//  4    4    4                    //  4    4    4    4
// --- - --- + ---                    // --- - --- + --- - ---
//  1    3    5                    //  1    3    5    7

// Zaten Tek sayi girerseniz işleme girmeyeceği için en sonda aynı negatif sayinin 2 defa yazdirildiğini görebilirsiniz :)

//İyi Çalışmalar





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 15:49.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk