Girilen hassasiyete göre pi sayısını bulan program.
Elimden geldiğince anlatmaya çalıştım.İyi Çalışmalar Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
#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