C# 1. ve 2. Dereceden Denklem Çözücü Program

Bu dersimizde 1. ve 2. dereceden denklem çözen bir program yapacağız. Siz denklemi yazın, o çözsün.

Bu dersimizde 1. ve 2. dereceden denklem çözen bir program yapacağız. Siz denklemi yazın, o çözsün.









Bu işlem, textbox'a yazılan metni split(); kullanarak işlemi tanımlayıp gerekenleri yapmaya dayanıyor. Fazla söze gerek yok, kodları paylaşıyorum. Yorumlarınızı ve anlaşılmayan yerleri sormanızı bekliyorum.


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;



namespace WindowsFormsApplication10

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        #region İŞLEMLER    

                                //1.Dereceden denklemler için işlemler 

        void toplama()

        {

            

            MessageBox.Show("X = " + (sonuççç - sabittt) / kattasayi);

            

            listBox1.Items.Add(textBox1.Text);

            listBox1.Items.Add("X = " + (sonuççç - sabittt) / kattasayi);



        }

        void çıkarma()

        {

            

            MessageBox.Show("X = " + (sonuççç + sabittt) / kattasayi);

            

            listBox1.Items.Add(textBox1.Text);

            listBox1.Items.Add("X = " + (sonuççç + sabittt) / kattasayi);



        }

        void çarpma()

        {

            

            MessageBox.Show("X = " + sonuççç / (kattasayi * sabittt));

            

            listBox1.Items.Add(textBox1.Text);

            listBox1.Items.Add("X = " + sonuççç / (kattasayi * sabittt));



        }

        void bölme()

        {

            

            MessageBox.Show("X = " + (sabittt * sonuççç) / kattasayi);

            

            listBox1.Items.Add(textBox1.Text);

            listBox1.Items.Add("X = " + (sabittt * sonuççç) / kattasayi);



        }



        #endregion

        

        

        double kattasayi, sonuççç, sabittt;

        

        bool xkare = false;

        

        double katsayi1, katsayi2, sabit, sonuç, delta, a, b, c;

        private void button1_Click(object sender, EventArgs e)

        {

            listBox2.Items.Add("n");

            listBox1.Items.Add("n");

            

            

            xkare = false;

            

            string karee = textBox1.Text;

            char[] karebulucu = karee.ToCharArray();



            for (int i = 0; i < karebulucu.Length; i++) //İfadenin x² li değişken içerip içermediğine bakıyor

            {

                if (karebulucu == 'X')

                {

                    //MessageBox.Show("x² var");

                    

                    xkare = true;

                    break;

                }

            }



            string kare = textBox1.Text;

            string[] karebul = kare.Split('X');



            #region X KARELİ İFADE



            if (xkare)          //x² li değişken içeriyorsa bu bölüm çalışıyor

            {

                katsayi1 = Convert.ToDouble(karebul[0]);

                



                string[] katsay = kare.Split('X', '+', '-', '*', '/', '=', 'x');

                katsayi2 = Convert.ToDouble(katsay[2]);

                



                string[] sabitt = kare.Split('X', '+', '-', '*', '/', '=', 'x');

                sabit = Convert.ToDouble(sabitt[4]);

                



                



                char[] işbelir = kare.ToCharArray();



                #region ARTI EKSİ Lİ KATSAYILAR     

                                                            //Katsayılar belirleniyor..

                for (int i = 0; i < işbelir.Length; i++)

                {

                    if (işbelir=='+')

                    {

                        for (int z = i+1; z < işbelir.Length; z++)

                        {

                            if (işbelir[z] == '+')

                            {

                                

                                a = katsayi1;

                                b = katsayi2;

                                c = sabit;

                                break;

                                

                            }

                            else if (işbelir[z] == '-')

                            {

                                

                                a = katsayi1;

                                b = katsayi2;

                                c = -sabit;

                                break;

                                

                            }

                            

                        }

                        

                    }

                    else if (işbelir == '-')

                    {

                        for (int z = i + 1; z < işbelir.Length; z++)

                        {

                            if (işbelir[z] == '+')

                            {

                                

                                a = katsayi1;

                                b = -katsayi2;

                                c = sabit;

                                break;



                            }

                            else if (işbelir[z] == '-')

                            {

                                

                                a = katsayi1;

                                b = -katsayi2;

                                c = -sabit;

                                break;



                            }



                        }

                    }





                    

                }

                





                #endregion



                delta = b * b - 4 * a * c;  //x² li ifadelerin sonuçları gösteriliyor.

                if (delta<0)

                {

                    MessageBox.Show("Reel kök yoktur !");

                    listBox1.Items.Add(textBox1.Text);

                    listBox1.Items.Add("X = " + (-b / 2 * a));

                }

                if (delta == 0)

                {

                    MessageBox.Show("X = "+ (-b/2*a));

                    listBox1.Items.Add(textBox1.Text);

                    listBox1.Items.Add("X = " + (-b / 2 * a));

                }

                if (delta>0)

                {

                    double x1, x2;

                    x1 = (-b - Math.Sqrt(delta)) / (2 * a);

                    x2 = (-b + Math.Sqrt(delta)) / (2 * a);

                    MessageBox.Show("İki Kök VardırnX1 = "+x1+"nX2 = "+x2);

                    listBox1.Items.Add(textBox1.Text+" = 0");

                    listBox1.Items.Add("X1 = " + x1);

                    listBox1.Items.Add("X2 = " + x2);

                }

                    listBox2.Items.Add("x(2) katsayısı : "+a);

                    listBox2.Items.Add("x katsayısı     : "+b);

                    listBox2.Items.Add("sabit sayı       : "+c);

                    listBox2.Items.Add("delta              : "+delta);

                    

            }

            #endregion

            #region X Lİ İFADE

            if (!xkare)             //x² içermeyen yani 1.Dereceden denklem ise bu bölüm çalışıyor.

            {

                

                #region İŞLEMİN İŞARETİ

                string işlem = textBox1.Text;

                char[] işlemim = işlem.ToCharArray();



                for (int i = 0; i < işlemim.Length; i++)

                {

                    //listBox1.Items.Add(işlemim);

                }

                #endregion

                #region SAYISAL DEÐERLER

                string soru = textBox1.Text;

                string[] dizi = soru.Split('+', '-', '*', '/', '=');



                for (int i = 0; i < dizi.Length; i++)

                {

                    //listBox1.Items.Add(dizi);

                }

                #endregion

                #region SONUÇ BULUNMASI

                string son = textBox1.Text;

                string[] sonuç = son.Split('=');



                sonuççç = Convert.ToDouble(sonuç[1]);

                

                #endregion

                #region SABİT BULUNMASI

                string sab = textBox1.Text;

                string[] sabit = sab.Split('+', '-', '*', '/', '=', 'x');

                for (int i = 0; i < dizi.Length; i++)

                {

                    //listBox1.Items.Add(sabit);

                }

                sabittt = Convert.ToDouble(sabit[2]);

                

                #endregion

                #region KATSAYI BULUNMASI

                string kat = textBox1.Text;

                string[] katsayi = kat.Split('x');

                for (int i = 0; i < katsayi.Length; i++)

                {

                    //listBox1.Items.Add(katsayi);

                }

                kattasayi = Convert.ToDouble(katsayi[0]);

                

                #endregion

                

                listBox2.Items.Add("x katsayısı     : " + kattasayi);

                listBox2.Items.Add("sabit sayı       : " + sabittt);

                listBox2.Items.Add("eşit                : " + sonuççç);

                #region İŞLEMİN ÇALIŞTIRILMASI

                                                    //gereken işlem seçiliyor ve en baştaki fonksiyonlar çalıştırılıyor.

                for (int i = 0; i < işlemim.Length; i++)

                {

                    if (işlemim == '+')

                    {

                        toplama();

                        break;

                    }

                    if (işlemim == '-')

                    {

                        çıkarma();

                        break;

                    }

                    if (işlemim == '*')

                    {

                        çarpma();

                        break;

                    }

                    if (işlemim == '/')

                    {

                        bölme();

                        break;

                    }

                }

                #endregion









            }

            #endregion

           

        }



        private void timer1_Tick(object sender, EventArgs e)

        {

            string kasd = textBox1.Text;        //eğer x² li ifade varsa otomatik olarak sıfıra eşitlediğini belirtiyor.

            char[] kasdd = kasd.ToCharArray();



            try

            {



                if (kasdd[0] == 'X' || kasdd[1] == 'X' || kasdd[2] == 'X' || kasdd[3] == 'X')

                {

                    label1.Visible = true;

                }

                else

                {

                    label1.Visible = false;

                }



            }

            catch

            {

            }

    }



        private void Form1_Load(object sender, EventArgs e)

        {

            

        }



        private void button2_Click(object sender, EventArgs e)

        {

            listBox2.Items.Clear();

            listBox1.Items.Clear();

            textBox1.Text = "" ;

        }



        private void button3_Click(object sender, EventArgs e)

        {                                                           //yardım bölümü.

            MessageBox.Show("(1) x² li ifade yerine X(büyük x) kullanınız. n(Ör:3x²+4x+4 için 3X+4x+4)nn(2) Eğer x'li ifadenin katsayısı 1 ise 1 ,olmayan x li ifade için katsayıya 0 yazınız. n(Ör:2x²+5 için 2X+0x+5)nn(3) 1.Dereceden ise : 12x+5=0n      2.Dereceden ise : 4X+2x+12nyazınız ve derecesi büyük olandan küçük olana doğru sıralayınız. nn(4) x²'li denklemler otomatik olarak 0'a eşitlenir eşittir işareti yazmayınız. nnnn Teşekürler. AOS");

        }

    }

        

}



Elbette daha iyi yazılabilir. Umarım faydalı olabilmişimdir..
  • Etiketler;
Zonee Zonee
Sanalkurs.net
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

programın indirme linkini koyma imkanınız var mı acaba çok önemli benim için yardımcı olursanız sevinirim er_189@hotmail.com teşekkürler şimdiden
Program çalısmıyor linkini atarmısın

Yukarı Git