C# ile Çeşitli Matematiksel İşlemler
C# Console ortamında benim yazdığım, permütasyon, kombinasyon, küre alan-hacim, hipotenüs hesaplamalarını yapan, girilen kenar uzunluklarına göre üçgen türünü bulan (eşkenar, ikizkenar, çeşitkenar üçgen) ve dışarıdan girilen denkleme göre denklemin köklerini bulan bir programdır.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace MatIs1 { class Program { static int faktoriyel(int sayi)// Faktöriyeli hesaplamak için kullanacağız. { if (sayi == 0) return 1; else return sayi * faktoriyel(sayi - 1); } static double us_al(double taban, double us)// Üs almak için kullanacağız. { if (us == 0) return 1; else return taban * us_al(taban, us - 1); } static int permütasyon(int n, int r)// P(n,r)=n!/(n-r)! formulünü kullanarak hesaplayacağız. (r ve n pozitif ve r <= n şartıyla) { return faktoriyel(n) / faktoriyel(n - r); } static int kombinasyon(int n, int r)// C(n,r)=n!/r!*(n-r)! formulünü kullanarak hesaplayacağız. (r ve n pozitif ve n >= r şartıyla) { return faktoriyel(n) / (faktoriyel(r) * faktoriyel((n - r))); } static double kure_alan(double r)// Alan=4*pi*r(kare) formulü ile hesapladık. ( r kürenin yarıçapı) { return 4 * 3.14 * us_al(r, 2); } static double kure_hacim(double r)// Hacim=4*pi*r(küp)/3 formulü ile hesapladık. ( r kürenin yarıçapı) { return 4 * 3.14 * us_al(r, 3) / 3; } static double hipotenus(double a, double b)// Hipotenüsü hesaplamak için kullanacağız. { double hipotenus; hipotenus= Math.Sqrt(a) + Math.Sqrt(b); return hipotenus; } static void kontrol(int a, int b, int c)// Üçgen türünü öğrenmek için kullanacağız. { if (a == b && b==c) { Console.WriteLine("{0} {1} {2} kenarları ile oluşturulan üçgen Eşkenar üçgendir. ",a,b,c); } else if (a == b || a == c || b == c) { Console.WriteLine("{0} {1} {2} kenarları ile oluşturulan üçgen İkizkenar üçgendir. ", a, b, c); } else { Console.WriteLine("{0} {1} {2} kenarları ile oluşturulan üçgen Çeşitkenar üçgendir. ", a, b, c); } } static void kok_bul(double a, double b, double c)// Denklem köklerini burayı kullanarak bulacağız. { double delta = us_al(b, 2) - 4 * a * c; if (delta > 0) { double x1 = (-b - Math.Sqrt(delta)) / 2 * a; double x2 = (-b + Math.Sqrt(delta)) / 2 * a; Console.WriteLine("Girilen denklemin iki tane farklı reel kökü vardır."); Console.WriteLine("Birinci Kök x1={0} İkinci Kök x2={1} olarak hesaplanmıştır. ", x1, x2); } else if (delta == 0) { double x3 = -b / 2 * a; Console.WriteLine("Girilen denklemin iki tane eşit reel kökü vardır."); Console.WriteLine("Eşit iki reel kök x1=x2={0} olarak hesaplanmıştır. ", x3); } else { Console.WriteLine("Delta<0 olduğu için denklemin reel kökü yoktur. Bu durumda denklemin karmaşık iki farklı kökü vardır."); } } static void Main(string[] args) { char cevap; try { int secim = 0; int z = 1; do { Console.Clear(); //----------- Console.Title = "www.semihduran.com"; Console.WriteLine("<<<<< © 2011 Semih DURAN www.semihduran.com >>>>>"); Console.WriteLine(); Console.WriteLine(" Permütasyon Kombinasyon Küre Alan-Hacim Gauss Hipotenüs Hesaplama Üçgen türü bulma ve Denklem Kökü Bulma Programı "); Console.WriteLine(); //----------- Console.WriteLine("1 --> Permütasyon Hesaplama"); Console.WriteLine("2 --> Kombinasyon Hesaplama"); Console.WriteLine("3 --> Kürenin Alanını Hesaplama"); Console.WriteLine("4 --> Kürenin Hacmini Hesaplama"); Console.WriteLine("5 --> Hipotenüs Hesaplama"); Console.WriteLine("6 --> Üçgen türünü kontrol etme (eşkenar,ikizkenar,çeşitkenar)"); Console.WriteLine("7 --> Denklemin köklerini bulma"); Console.WriteLine("8 --> Çıkış"); do { Console.Write("Lütfen yukarıdaki işlemlerden birini seçerek ENTER 'a basın :"); secim = Convert.ToByte(Console.ReadLine()); } while (secim < 1 || secim > 8); switch (secim) { case 1: Console.WriteLine(); Console.WriteLine("Permütasyon hesaplama bölümüne hoş geldiniz."); Console.WriteLine("P(n,r) Permütasyonun n değerini girin :"); int n = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("P(n,r) Permütasyonun r değerini girin :"); int r = Convert.ToInt32(Console.ReadLine()); if (n > 0 && r > 0 && r <= n) { Console.WriteLine("P({0},{1}) Permütasyonu {2} olarak hesaplanmıştır.", n, r, permütasyon(n, r)); } else { Console.WriteLine("Girdiğiniz n veya r değeri permütasyon hesaplamak için uygun değildir. n>0 r>0 ve r<=n şartını sağlayın."); } break; case 2: Console.WriteLine(); Console.WriteLine("Kombinasyon hesaplama bölümüne hoş geldiniz."); Console.WriteLine("C(n,r) Kombinasyonun n değerini girin :"); int en = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("C(n,r) Kombinasyonunun r değerini girin :"); int re = Convert.ToInt32(Console.ReadLine()); if (en >= 0 && re >= 0 && en >= re) { Console.WriteLine("C({0},{1}) Kombinasyonu {2} olarak hesaplanmıştır.", en, re, kombinasyon(en, re)); } else { Console.WriteLine("Girdiğiniz n veya r değeri permütasyon hesaplamak için uygun değildir. n>0 r>0 ve r<=n şartını sağlayın."); } break; case 3: Console.WriteLine(); Console.WriteLine("Kürenin alanını hesaplama bölümüne hoş geldiniz."); Console.WriteLine("Uyarı: Programda Pi sayısı 3,14 olarak sabit alınmıştır."); Console.WriteLine("Lütfen kürenin yarıçap(r) değerini girin :"); double yaricap = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Kürenin alanı {0} olarak hesaplanmıştır.", kure_alan(yaricap)); break; case 4: Console.WriteLine(); Console.WriteLine("Kürenin hacmini hesaplama bölümüne hoş geldiniz."); Console.WriteLine("Uyarı: Programda Pi sayısı 3,14 olarak sabit alınmıştır."); Console.WriteLine("Lütfen kürenin yarıçap(r) değerini girin :"); double yaricap2 = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Kürenin hacmi {0} olarak hesaplanmıştır.", kure_hacim(yaricap2)); break; case 5: Console.WriteLine(); Console.WriteLine("Dik Üçgende Hipotenüs hesaplama bölümüne hoş geldiniz."); Console.WriteLine("a2+b2=c2 formulündeki a değerini girin :"); double aa = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("a2+b2=c2 formulündeki b değerini girin :"); double bb = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("a2+b2=c2 formulünde hipotenüs c2={0} olarak hesaplanmıştır.", hipotenus(aa, bb)); break; case 6: Console.WriteLine(); Console.WriteLine("Kenar uzunlukları kullanarak üçgen türü bulma bölümüne hoş geldiniz."); Console.WriteLine("Kenar uzunluklarını a,b,c kabul ettiğimiz üçgenin a kenar uzunluğunu girin :"); int a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Kenar uzunluklarını a,b,c kabul ettiğimiz üçgenin b kenar uzunluğunu girin :"); int b = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Kenar uzunluklarını a,b,c kabul ettiğimiz üçgenin c kenar uzunluğunu girin :"); int c = Convert.ToInt32(Console.ReadLine()); kontrol(a, b, c); break; case 7: Console.WriteLine(); Console.WriteLine("Denklem köklerini bulma bölümüne hoş geldiniz."); Console.WriteLine("Uyarı: ax2+bx+c formulünde ax2 axkare anlamındadır."); Console.WriteLine("ax2+bx+c denklemindeki a değerini girin :"); double birinci = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("ax2+bx+c denklemindeki b değerini girin :"); double ikinci = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("ax2+bx+c denklemindeki c değerini girin :"); double ucuncu = Convert.ToDouble(Console.ReadLine()); kok_bul(birinci, ikinci, ucuncu); break; case 8: z = 2; break; } if (z == 1) { Console.WriteLine(); Console.WriteLine(" Programı kullanarak tekrar hesaplama yapmak ister misiniz? e/h"); cevap = Convert.ToChar(Console.ReadLine()); } else { Console.WriteLine(); Console.WriteLine("Daha fazlası için www.semihduran.com"); Thread.Sleep(2000); return; } } while (cevap == 'e' || cevap == 'E'); Console.WriteLine(); Console.WriteLine("Daha fazlası için www.semihduran.com"); Thread.Sleep(2000); } catch { Console.WriteLine("Geçersiz giriş yapıldı. Program 3 saniye sonra kapatılacak. "); Thread.Sleep(3000); } } } }
Son yorumlar