C# İstatistik Hesabı Uygulaması

3 Mart 2011 by B.Selçuk ÖKSÜZ
Leave a reply »
WP Greet Box icon
Merhaba! Selcukoksuz.com adresine hoş geldiniz. Eğer yeni iseniz ve içeriğimizi takip etmek isterseniz RSS Abonesi Olabilirsiniz.
Mailinize onay mesajı gönderilecektir. Cevaplamayı unutmayınız.

C# uygulamalarına biraz ara vermiştik ki bir uygulama daha paylaşıyorum sizlerle. Bu uygulama aslında C# öğrenmekten bir yana matematiksel hesap yapabilen bir program oldu. Uygulamayı Erciyes Üniversitesi Olasılık Teorileri ve İstatistik dersi hocası  verdi.

Uygulama bir çok sayısal veriyi hesaplayarak kullanıcıya dökümünü gösterebilmektedir. Bununla birlikte kullanıcının girmiş olduğu x,y değerlerine ait grafik çizimi yapmaktadır.

Bir çoğunuzun işine yarayacak parça kodlar da var. Mesela her hangi bir yerde ENTER tuşu ile bir action belirleme gibi. Umarım bir faydası dokunur. Kodu çok fazla test etme imkanım olmadı. Eğer bir hata, aksaklık yada öneriniz olursa paylaşırsanız sevinirim.

Güncelleme 03.03.2011

Aşağıda ki kod açıklamasında 78. satır 83. satıra indirilmesi gerekiyor. Mantıksal hata mevcut eski hali ile. Aşağıda indirdiğiniz dosyada gerekli düzenlemeyi yapmayı unutmayınız.

Programın ekran görüntüsü, kodları ve proje dosyası aşağıdadır;

İstatistiksel Hesap C# Uygulaması

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace IstatislikHesaplamalar
{
    public partial class Form1 : Form
    {
        private readonly Dictionary<int, int> _degerler = new Dictionary<int, int>();

        public Form1()
        {
            InitializeComponent();
            chart1.DataSource = _degerler;
            chart1.Series[0].XValueMember = "Key";
            chart1.Series[0].YValueMembers = "Value";
        }

        private void buttonOk_Click(object sender, EventArgs e)
        {
            if (textX.Text == "" || textY.Text == "")
            {
                labelError.Text = "Boş değer giremezsiniz.";
            }
            else
            {
                listX.Items.Add(textX.Text); listY.Items.Add(textY.Text);
                textX.Text = ""; textY.Text = ""; labelError.Text = "";
                buttonCalc.Enabled = true;
                textX.Focus();
            }
        }

        private void buttonCalc_Click(object sender, EventArgs e)
        {
            int n = listX.Items.Count;//Toplamda kaç x-y çifti girildi

            int totalX = 0, totalY =0; //X ve Y lerin toplamları
            int powX = 0, powY = 0; //X ve Y lerin kareleri toplamı

            double PowXsumY = 0;
            double Xort, Yort;
            double Sxx=0, Syy=0, Sxy=0 , Sx, Sy, Rxy, B0, Bi;

            foreach (object arrayX in listX.Items)
            {
                totalX += (int)Convert.ChangeType(arrayX, typeof(int));
                powX += (int)Math.Pow(Convert.ToDouble(arrayX),2);
                //Convert.ToInt32(arrayX) * Convert.ToInt32(arrayX);
            }

            foreach (object arrayY in listY.Items)
            {
                totalY += (int)Convert.ChangeType(arrayY, typeof(int));
                powY += (int)Math.Pow(Convert.ToDouble(arrayY), 2);
                //Convert.ToInt32(arrayY) * Convert.ToInt32(arrayY);
            }

            Xort = (double)totalX / n; Yort = (double)totalY / n;//Ortalama Hesabı

            for (int i = 0; i < n; i++)
            {
                PowXsumY += Math.Pow(Convert.ToDouble(listX.Items[i]) + Convert.ToDouble(listY.Items[i]), 2);//Pow(X+Y)

                Sxx += (Math.Pow((Convert.ToDouble(listX.Items[i]) - Xort), 2));//Sx^2
                Syy += (Math.Pow((Convert.ToDouble(listY.Items[i]) - Yort), 2));//Sy^2
                Sxy += ((Convert.ToDouble(listX.Items[i]) - Xort) * (Convert.ToDouble(listY.Items[i])- Yort));

                _degerler.Add((Convert.ToInt16(listX.Items[i])), (Convert.ToInt16(listY.Items[i])));
                chart1.DataBind();
            }            

            //Sx = Math.Sqrt(Sxx); Sy = Math.Sqrt(Syy);//Güncelleme 03.03.2011 Bu satır aşağıya taşınmıştır.
            Sxx = Sxx / (n - 1);//Sxx
            Syy = Syy / (n - 1);//Syy
            Sxy = Sxy / (n - 1);//Sxy
            Rxy = Sxy / (Sx * Sy);//Rxy
            Sx = Math.Sqrt(Sxx); Sy = Math.Sqrt(Syy);//Sx ve Sy nin hesaplanması, karekök
            Bi = Sxy / Sxx;
            B0 = Yort - (Bi * Xort);

            richTextBox1.Text = "Toplam X-Y Çifti = " + n + "\nX ler toplamı = "+totalX+"\n";
            richTextBox1.Text += "Y ler toplamı = " + totalY + "\nPowX = " + powX + "\nPowY = " + powY + "\n";
            richTextBox1.Text += "Pow(x+y) = " + PowXsumY+"\nXlerin ortalaması = "+Xort+"\nYlerin ortalaması = "+Yort;
            richTextBox1.Text += "\nSx = " + Sx + "\nSy = " + Sy + "\nSxy = " + Sxy + "\nRxy = " + Rxy;
            richTextBox1.Text += "\nBi = " + Bi + "\nBo = " + B0;
        }

        private void textX_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                textY.Focus();
        }

        private void textY_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                buttonOk_Click(sender, e);
        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            listX.Items.Clear();
            listY.Items.Clear();
            buttonCalc.Enabled = false;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "Tarih: " + Convert.ToString(DateTime.Now).Substring(0, 10);
            toolStripStatusLabel2.Text = "Saat: " + DateTime.Now.ToString().Substring(11, 8);
        }

        private void toolStripStatusLabel3_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start( @"http://blog.selcukoksuz.com");
        }

    }
}

 

Güncelleme 10.03.2011

Arkadaşlar program int tipinde ki ki sayılar için çalışmaktaydı. Double tipinde ki sayılar içinde çalışmaktadır. Yukarıda ki güncelleme satırı da düzeltilmiş programın son halinin kodları aşağıdadır. Gerekli düzenlemeyi en aşağıda indireceğiniz proje dosyasında yapmayı unutmayınız.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace IstatislikHesaplamalar
{
    public partial class Form1 : Form
    {
        private readonly Dictionary<double, double> _degerler = new Dictionary<double, double>();

        public Form1()
        {
            InitializeComponent();
            chart1.DataSource = _degerler;
            chart1.Series[0].XValueMember = "Key";
            chart1.Series[0].YValueMembers = "Value";
        }

        private void buttonOk_Click(object sender, EventArgs e)
        {
            if (textX.Text == "" || textY.Text == "")
            {
                labelError.Text = "Boş değer giremezsiniz.";
            }
            else
            {
                listX.Items.Add(textX.Text); listY.Items.Add(textY.Text);
                textX.Text = ""; textY.Text = ""; labelError.Text = "";
                buttonCalc.Enabled = true;
                textX.Focus();
            }
        }

        private void buttonCalc_Click(object sender, EventArgs e)
        {
            int n = listX.Items.Count;//Toplamda kaç x-y çifti girildi

            double totalX = 0, totalY =0; //X ve Y lerin toplamları
            double powX = 0, powY = 0; //X ve Y lerin kareleri toplamı

            double PowXsumY = 0;
            double Xort, Yort;
            double Sxx=0, Syy=0, Sxy=0 , Sx, Sy, Rxy, B0, Bi;

            foreach (object arrayX in listX.Items)
            {
                totalX += (double)Convert.ChangeType(arrayX, typeof(double));
                powX += (double)Math.Pow(Convert.ToDouble(arrayX),2);
                //Convert.ToInt32(arrayX) * Convert.ToInt32(arrayX);
            }

            foreach (object arrayY in listY.Items)
            {
                totalY += (double)Convert.ChangeType(arrayY, typeof(double));
                powY += (double)Math.Pow(Convert.ToDouble(arrayY), 2);
                //Convert.ToInt32(arrayY) * Convert.ToInt32(arrayY);
            }

            Xort = (double)totalX / n; Yort = (double)totalY / n;//Ortalama Hesabı

            for (int i = 0; i < n; i++)
            {
                PowXsumY += Math.Pow(Convert.ToDouble(listX.Items[i]) + Convert.ToDouble(listY.Items[i]), 2);//Pow(X+Y)

                Sxx += (Math.Pow((Convert.ToDouble(listX.Items[i]) - Xort), 2));//Sx^2
                Syy += (Math.Pow((Convert.ToDouble(listY.Items[i]) - Yort), 2));//Sy^2
                Sxy += ((Convert.ToDouble(listX.Items[i]) - Xort) * (Convert.ToDouble(listY.Items[i])- Yort));

                _degerler.Add((Convert.ToDouble(listX.Items[i])), (Convert.ToDouble(listY.Items[i])));
                chart1.DataBind();
            }

            Sxx = Sxx / (n - 1);//Sxx
            Syy = Syy / (n - 1);//Syy
            Sxy = Sxy / (n - 1);//Sxy
            Sx = Math.Sqrt(Sxx); Sy = Math.Sqrt(Syy);//Sx ve Sy nin hesaplanması, karekök
            Rxy = Sxy / (Sx * Sy);//Rxy

            Bi = Sxy / Sxx;
            B0 = Yort - (Bi * Xort);

            richTextBox1.Text = "Toplam X-Y Çifti = " + n + "\nX ler toplamı = "+totalX+"\n";
            richTextBox1.Text += "Y ler toplamı = " + totalY + "\nPowX = " + powX + "\nPowY = " + powY + "\n";
            richTextBox1.Text += "Pow(x+y) = " + PowXsumY+"\nXlerin ortalaması = "+Xort+"\nYlerin ortalaması = "+Yort;
            richTextBox1.Text += "\nSx = " + Sx + "\nSy = " + Sy + "\nSxy = " + Sxy + "\nRxy = " + Rxy;
            richTextBox1.Text += "\nBi = " + Bi + "\nBo = " + B0;
        }

        private void textX_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                textY.Focus();
        }

        private void textY_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                buttonOk_Click(sender, e);
        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            listX.Items.Clear();
            listY.Items.Clear();
            buttonCalc.Enabled = false;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "Tarih: " + Convert.ToString(DateTime.Now).Substring(0, 10);
            toolStripStatusLabel2.Text = "Saat: " + DateTime.Now.ToString().Substring(11, 8);
        }

        private void toolStripStatusLabel3_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start( @"http://blog.selcukoksuz.com");
        }

    }
}

C# İstatistik Hesabı Yapan Uygulamayı İndir

Yazar Hakkında

Bilgisayarla yaşamayı bir tarz olarak benimsemiş, teknoloji ile tamamen içli dışlı bir; web tasarımcı, yazılımcı, donanımcı, blog yazarı ve bilgisayar mühendisidir.
B.Selçuk ÖKSÜZ
B.Selçuk ÖKSÜZ kullanıcısının tüm yazıları.

Arama Sorguları

  • hata hesabı uygulaması (22)
  • C# (21)
  • istatistik ders hocası (17)
  • istatistik hesaplama programı (17)
Advertisement

Bu Yazıyı Beğendiniz Mi?

1

1 comment

  1. Hüseyin Narcı dedi ki:

    proje dosyası linki ölmüş yenileme şansın var mı yada mail olarak atabilirmisin ?

Bir Cevap Yazın

Sizin Yorumunuz Nedir?

%d blogcu bunu beğendi:
Gizlilik Hakları