İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# İkinci Derece Denklem Çözümü Örneği

C# İkinci Derece Denklem Çözümü Örneği yazım ile C# eğitim setime devam ediyorum

C# İkinci Derece Denklem Çözümü Örneği
+ - 0

Selamlar arkadaşlar, C# İkinci Derece Denklem Çözümü Örneği yazım ile C# eğitim setime devam ediyorum. Bu dersimizi ve bundan sonraki matematiksel işlemler ile ilgili tüm dersleri matematiksel işlemler adında açtığım bir proje altında toplayarak github‘a yükleyeceğim. Bağlantıya tıklayarak ilgili projeye ulaşabilirsiniz. Gelin bu yazının konusu olan ikinci derece denklem çözümünün C# ile nasıl yapıldığına bakalım.

C# İkinci Derece Denklem Çözümü Örneği

Derecesi 2 olan polinomların oluşturduğu denklemlere İkinci derece denklemler denmektedir. Bu tür denklemlerin genel formu aşağıda görüldüğü gibidir.

x burada değişken yani bir bilinmeyendir. a ve b katsayılar a sıfıra eşit olmamak şartı ile c ise bir sabit sayıdır. Bu denklemler çarpanlara ayırma , kareye tamamlama ve diskriminant  yöntemleri ile çözülürler.

 

Bu proje de dışarıdan girilen a,b ve c sayılarının ikinci dereceden köklerini bulma konusunda bakacağız.

Ben aşağıdaki gibi bir ekran tasarımı hazırladım.

C# İkinci Derece Denklem Çözümü Örneği

Şimdi kodlarımıza geçelim.

        private void Iki_Bilinmeyenli_Denklem_Load(object sender, EventArgs e)
        {
            txt_a.Text = "1";
            txt_b.Text = "0";
            txt_c.Text = "0";
        }

        int a, b, c;
        private void btn_coz_Click(object sender, EventArgs e)
        {
            list_sonuc.Items.Clear();

            double d = (b * b) - (4 * a * c);
            if (d > 0)
            {
                double x1 = ((-b - Math.Sqrt(d)) / (2 * a));
                double x2 = ((-b + Math.Sqrt(d)) / (2 * a));
                list_sonuc.Items.Add("Denklemin İki Kökü Vardır = ");
                list_sonuc.Items.Add("x1 =" + x1);
                list_sonuc.Items.Add("x2 =" + x2);
            }
            else if (d == 0)
            {
                double x = -b / (2 * a);
                list_sonuc.Items.Add("Denklemin Bir Kökü Vardır = ");
                list_sonuc.Items.Add("x =" + x);
            }
            else
            {
                list_sonuc.Items.Add("Sanal Kök Vardır");
            }
        }

Bu kodlarda anlatacak fazla bir şey yok. Kodlarımız yukarıda görüldüğü gibidir. Nerede ve ne zaman işinize yarayacak bilmiyorum ama belki bir bir gün bir yerlerde işinize yarayabilir. :D

Şimdi gelelim kontrollerimizi hazırlamaya. Yukarıda ne demiştik a sıfır olamaz. Tabi diğerlerinin de sayı girilmesi gerekiyor. O halde burada girişlerin sayı olması zorunluluğunu koymalıyız.

Bunun için textbox’ların Leave eventlerini ve FormatException hatasını kullanacağız.

        private void txt_a_Leave(object sender, EventArgs e)
        {
            try
            {
                a = Convert.ToInt32(txt_a.Text);

                if (a == 0)
                {
                    this.ActiveControl = txt_a;
                    MessageBox.Show("a sayısı sıfır olamaz", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    txt_a.BackColor = Color.White;
                }
            }
            catch (FormatException)
            {
                txt_a.BackColor = Color.Yellow;
                this.ActiveControl = txt_a;
                MessageBox.Show("Bir sayı girmelisiniz", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

a bir sayı olmak zorunda ve a sıfır olamaz. Burada

this.ActiveControl = txt_a;

ile doğru bir değer girilene kadar kullanıcının textbox’tan ayrılmasına müsade etmiyoruz. Bu komut sürekli ilgili nesneye focus olarak kullanıcının nesneden ayrılmasına izin vermiyor.

 private void txt_b_Leave(object sender, EventArgs e)
        {
            try
            {
                b = Convert.ToInt32(txt_b.Text);
                txt_b.BackColor = Color.White;
            }
            catch (FormatException)
            {
                txt_b.BackColor = Color.Yellow;
                this.ActiveControl = txt_b;
                MessageBox.Show("Bir sayı girmelisiniz", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void txt_c_Leave(object sender, EventArgs e)
        {
            try
            {
                c = Convert.ToInt32(txt_c.Text);
                txt_c.BackColor = Color.White;
            }
            catch (FormatException)
            {
                txt_c.BackColor = Color.Yellow;
                this.ActiveControl = txt_c;
                MessageBox.Show("Bir sayı girmelisiniz", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

b ve c içinde aynı şeyleri yapıyoruz. Ek olarak hata durumunda nesnelerin arkaplan renklerini vurgulamak amacı ile değiştiriyoruz.

 

NOT: Burada C# Sadece Sayı Girişi İçin Özelleştirilmiş TextBox Yapmak yazımdaki işlemi de ekleyebilirdik. Ben yapmadım ama siz yapabilirsiniz.

Fırsat buldukça sitemde mevcutta var olan matematiksel işlemleri içeren önceki derslerimin kodlarını da bu projeye eklemeye çalışacağım.


C# İkinci Derece Denklem Çözümü Örneği yazım da bu kadardı arkadaşlar. Umarım bir faydasını görürsünüz. Diğer derslerimizde görüşmek üzere. Kendinize iyi bakın.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

(08.02.2021) Matematiksel İşlemler adlı Github projeme bağlantıya tıklayarak ulaşabilirsiniz. Bu konu ve sitemdeki diğer tüm matemetiksel işlemlere bu proje üzerinden de ulaşabileceksiniz.

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)