Sayfayı Yazdır | Pencereyi Kapat

hesap makinesi, virgül sorunu ...

Nereden Yazdırıldığı: C#nedir?com
Kategori: C# / .NET
Forum Adı: C#
Forum Tanımlaması: .NET Platformunun gözde dili
URL: http://www.csharpnedir.com/forum2/forum_posts.asp?TID=10509
Tarih: 29 Temmuz 2014 Saat 05:35
Program Versiyonu: Web Wiz Forums 8.03 - http://www.webwizforums.com


Konu: hesap makinesi, virgül sorunu ...
Mesajı Yazan: csharp_acemisi
Konu: hesap makinesi, virgül sorunu ...
Mesaj Tarihi: 29 Mayıs 2007 Saat 20:21

Arkadaşlar merhaba,

hesap makinesinin ondalıklı kısmı için bayağa bi uğraştım ama çıkamadım işin içinden... ondalıklı olarak işlem yapması için bu programda ne önerirsiniz?? şimdiden teşekkürler...
 
using System;
using System.Windows.Forms;
using System.Drawing;
namespace BBB
{
    class App
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    class MyForm : Form
    {
      
       
        private TextBox m_textBoxSingle;
       
        private Button m_backspace, m_clearEntry, m_clearAll;
        private Button m_0, m_1, m_2, m_3, m_4, m_5, m_6, m_7, m_8, m_9;
        private Button m_carp, m_topla, m_bol, m_cikart, m_nokta;
        private Button m_esittir;
        public Double a, b, c, k;
        public int counter=0;
        public string islem;
        public string nokta;
        
        public void Ver()   
        {
            a=Double.Parse(m_textBoxSingle.Text);
            m_textBoxSingle.Text = "";
        }

        public MyForm()
        {
            this.Text = "Hesap Makinesi";
            this.Size = new Size(350, 350);
            this.StartPosition = FormStartPosition.WindowsDefaultLocation;
            this.FormBorderStyle = FormBorderStyle.FixedDialog;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
       
            m_textBoxSingle = new TextBox();
            m_textBoxSingle.Location = new Point(15,15);
            m_textBoxSingle.Size = new Size(320,15);
            m_textBoxSingle.TabIndex = 0;
            m_backspace = new Button();
            m_backspace.Text = "&tek-tek sil";
            m_backspace.Location = new Point(75,60);
            m_backspace.Size = new Size(70, 30);
            m_backspace.TabIndex = 1;
            m_backspace.Click += new EventHandler(m_backspace_Click);

            m_clearEntry = new Button();
            m_clearEntry.Text = "girişi sil";
            m_clearEntry.Location = new Point(155, 60);
            m_clearEntry.Size = new Size(70, 30);
            m_clearEntry.TabIndex = 2;
            m_clearEntry.Click += new EventHandler(m_clearEntry_Click);
 
            m_clearAll = new Button();
            m_clearAll.Text = "Hepsini Sil";
            m_clearAll.Location = new Point(235, 60);
            m_clearAll.Size = new Size(70, 30);
            m_clearAll.TabIndex = 3;
            m_clearAll.Click += new EventHandler(m_clearAll_Click);
            m_0 = new Button();
            m_0.Text = "0";
           
            m_0.Location = new Point(75,100);
            m_0.Size = new Size(50, 25);
            m_0.TabIndex = 4;
            m_0.Click += new EventHandler(m_0_Click);
            m_1 = new Button();
            m_1.Text = "1";
        
            m_1.Location = new Point(130, 100);
            m_1.Size = new Size(50, 25);
            m_1.TabIndex = 5;
            m_1.Click += new EventHandler(m_1_Click);
            m_2 = new Button();
            m_2.Text = "2";
          
            m_2.Location = new Point(185, 100);
            m_2.Size = new Size(50, 25);
            m_2.TabIndex = 6 ;
            m_2.Click += new EventHandler(m_2_Click);

            m_3 = new Button();
            m_3.Text = "3";
            m_3.Location = new Point(75, 130);
            m_3.Size = new Size(50, 25);
            m_3.TabIndex = 6;
            m_3.Click += new EventHandler(m_3_Click);
            m_4 = new Button();
            m_4.Text = "4";
            m_4.Location = new Point(130, 130);
            m_4.Size = new Size(50, 25);
            m_4.TabIndex = 7;
            m_4.Click += new EventHandler(m_4_Click);
            m_5 = new Button();
            m_5.Text = "5";
            m_5.Location = new Point(185, 130);
            m_5.Size = new Size(50, 25);
            m_5.TabIndex = 8 ;
            m_5.Click += new EventHandler(m_5_Click);
            m_6 = new Button();
            m_6.Text = "6";
            m_6.Location = new Point(75, 160);
            m_6.Size = new Size(50, 25);
            m_6.TabIndex = 8;
            m_6.Click += new EventHandler(m_6_Click);
            m_7 = new Button();
            m_7.Text = "7";
            m_7.Location = new Point(130, 160);
            m_7.Size = new Size(50, 25);
            m_7.TabIndex = 8;
            m_7.Click += new EventHandler(m_7_Click);

            m_8 = new Button();
            m_8.Text = "8";
            m_8.Location = new Point(185, 160);
            m_8.Size = new Size(50, 25);
            m_8.TabIndex = 8;
            m_8.Click += new EventHandler(m_8_Click);
            m_9 = new Button();
            m_9.Text = "9";
            m_9.Location = new Point(75, 190);
            m_9.Size = new Size(50, 25);
            m_9.TabIndex = 9;
            m_9.Click += new EventHandler(m_9_Click);
            m_nokta = new Button();
            m_nokta.Text = ".";
            m_nokta.Location = new Point(130, 190);
            m_nokta.Size = new Size(50, 25);
            m_nokta.TabIndex = 10;
            m_nokta.Click += new EventHandler(m_nokta_Click);

            m_topla = new Button();
            m_topla.Text = "+";
            m_topla.Location = new Point(245,100);
            m_topla.Size = new Size(50, 25);
            m_topla.TabIndex = 11;
            m_topla.Click += new EventHandler(m_topla_Click);

            m_cikart = new Button();
            m_cikart.Text = "-";
            m_cikart.Location = new Point(245, 130);
            m_cikart.Size = new Size(50, 25);
            m_cikart.TabIndex = 12;
            m_cikart.Click += new EventHandler(m_cikart_Click);
            m_carp = new Button();
            m_carp.Text = "*";
            m_carp.Location = new Point(245, 160);
            m_carp.Size = new Size(50, 25);
            m_carp.TabIndex = 13;
            m_carp.Click += new EventHandler(m_carp_Click);
            m_bol = new Button();
            m_bol.Text = "/";
            m_bol.Location = new Point(245, 190);
            m_bol.Size = new Size(50, 25);
            m_bol.TabIndex = 14;
            m_bol.Click += new EventHandler(m_bol_Click);
            m_esittir = new Button();
            m_esittir.Text = "=";
            m_esittir.Location = new Point(245, 220);
            m_esittir.Size = new Size(50, 25);
            m_esittir.TabIndex = 15;
            m_esittir.Click += new EventHandler(m_esittir_Click);
 

            this.AcceptButton = m_backspace;
         
            this.Controls.Add(m_textBoxSingle);
            this.Controls.Add(m_backspace);
            this.Controls.Add(m_clearEntry);
            this.Controls.Add(m_clearAll);
            this.Controls.Add(m_0);
            this.Controls.Add(m_1);
            this.Controls.Add(m_2);
            this.Controls.Add(m_3);
            this.Controls.Add(m_4);
            this.Controls.Add(m_5);
            this.Controls.Add(m_6);
            this.Controls.Add(m_7);
            this.Controls.Add(m_8);
            this.Controls.Add(m_9);
            this.Controls.Add(m_topla);
          
            this.Controls.Add(m_cikart);
            this.Controls.Add(m_bol);
            this.Controls.Add(m_carp);
            this.Controls.Add(m_esittir);
            this.Controls.Add(m_nokta);
       
       
        }
 
        void m_backspace_Click(object sender, EventArgs e)
        {
         //...
        }
        void m_clearEntry_Click(object sender, EventArgs e)
        {
       //....
        }
        void m_clearAll_Click(object sender, EventArgs e)
        {
                 //....
        }
        void m_0_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_0.Text;
            /// + "\r\n";
            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_1_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_1.Text;

            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_2_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }

            m_textBoxSingle.Text += m_2.Text;

            //b = Int32.Parse(m_textBoxSingle.Text);
            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
 
        void m_3_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_3.Text;

            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_4_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_4.Text;
            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_5_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_5.Text;
           
            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_6_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }

            m_textBoxSingle.Text += m_6.Text;

           
            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_7_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_7.Text;

            //m_textBoxSingle.Text = "";
            //m_textBoxSingle.Focus();
        }
        void m_8_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_8.Text;

        }
 
        void m_9_Click(object sender, EventArgs e)
        {
            if (nokta == ".")
            {
                ++counter;
                //nokta = null;
            }
            m_textBoxSingle.Text += m_9.Text;
          
       
        }
        void m_nokta_Click(object sender, EventArgs e)
        {
            m_textBoxSingle.Text += m_nokta.Text;
           
            nokta = ".";
 
        }
       
      
        void m_esittir_Click(object sender, EventArgs e)
         {
 
                b = Double.Parse(m_textBoxSingle.Text);
                m_textBoxSingle.Text = "";
                Double c= 0 ;
                Double k = 0;
                switch (islem)
                {
                case "+":
                c = a + b;
                break;
                case "-":
                c = a - b;
                break;
                case "*":
                c = a * b;
                break;
                case "/":
                c = a /b;
                break;
                case "usal":
                c = Math.Pow(a , b);
                break;
                case "kokal":
                c = Math.Pow(a, (1 / b));
                break;
                }
                if (nokta == ".")
                {
                   k = (c /((counter*10)/3));
                   //counter = 0;

                    m_textBoxSingle.Text = k.ToString();
                }
                else
                    m_textBoxSingle.Text = c.ToString();
          }
 

        void m_topla_Click(object sender, EventArgs e)
        {
             Ver();
             islem = "+";
        }
        void m_cikart_Click(object sender, EventArgs e)
        {
            Ver();
            islem = "-";
        }
        void m_carp_Click(object sender, EventArgs e)
        {
            Ver();
            islem = "*";
        }
        void m_bol_Click(object sender, EventArgs e)
        {
            Ver();
            islem = "/";
        }
    }
}
 



Cevaplar:
Mesajı Yazan: zaferaydn
Mesaj Tarihi: 29 Mayıs 2007 Saat 20:59
çok uzun yazmışsın anlaşılmıyor. Tam olarak ne istediğini yazarsan daha güzel olur


Mesajı Yazan: csharp_acemisi
Mesaj Tarihi: 30 Mayıs 2007 Saat 00:53
derleyip çalıştırıldığında görüleceğe üzere tamsayılar, arasında dört işlem kısmında sorun yok, lakin virgüllü sayılarda, ilk basılan virgül tuşundan sonra kaç tuşa basılmışsa counter üzerinden ,
 
if (nokta == ".")        
{
       k = (c /((counter*10)/3));
        //counter = 0;
     m_textBoxSingle.Text = k.ToString();
               
}
 else
  m_textBoxSingle.Text = c.ToString();
}
 
bloğunda genel bir algoritma oluşturmaya çalıştım ama bu sadece mesela 2.1+1.1 gibi bir toplamada işe yarıyor, işlem diyelim ki 1.5+2=3.5 olsun burda 1.5'u parse edicek 15+2=17 olucak 17 yide benim bu algoritma üzerinden 3.5'a çevirmek zor :) zaten genelleştirebilmiş olsaydım o bloktaki kodu, bir sorun kalmayacaktı...      şu kod   k = (c /((counter*10)/3)); tamamen yanlış.. ordaki 3'ü virgüllü sonucu test etmek üzere koydum.. hesap makinesindeki virgüllü sayılara ilişkin sonucu elde edebilmek için counter değerine bağlı bir yol izlemeye çalıştım ama bulamadım .. bir çok yerde de araştırdım emsal kodlarda virgüllü sonuç elde edebilmiş kod göremedim .. çözüm yolu nedir??


Mesajı Yazan: baymyo
Mesaj Tarihi: 02 Haziran 2007 Saat 04:31

//double _deger1 =double.Parse(txtDeger1.Text);

//double _deger2 =double.Parse(txtDeger2.Text);

double _deger1 = Convert.ToDouble(txtDeger1.Text);

double _deger2 = Convert.ToDouble(txtDeger2.Text);

double _sonuc = _deger1 + _deger2;

lblSonuc.Text=_sonuc.ToString();

Sonuç: 2,2
 
burada bunu bir deneyin ben denedim böyle yapınca çalışıyor ama arasına virgül değil nokta koyarsanız onu direk olarak şöyle yapar misal 1.1 + 1.1 derseniz bunu convert ederken 11.0 + 11.0 olarak yapacaktır buda çıktıda 22.0 değilde 22 olarak gözükecektir tabi bu dışardan girdiğiniz zaman... kod kısmında manuel olarak yazarsanız... bunu farkedemezsiniz....

double _deger1 = 1.1;

double _deger2 = 1.1;

double _sonuc = _deger1 + _deger2;

lblSonuc.Text=_sonuc.ToString();

Sonuç: 2,2
 
bu şekilde çıktı virgüllü olucaktır... bu sizi yanıltmasın... dediğim gibi dışardan mutlaka virgülle girmelisiniz sayıları... kolay gelsin....


-------------
http://www.baymyo.com - baymyo.com - http://www.mustafayasarozkan.com - mustafayasarozkan.com - http://www.8gunhaber.com - haber portalı


Mesajı Yazan: zahir
Mesaj Tarihi: 03 Haziran 2007 Saat 01:08
Buyrun arkadaşlar sorunun çözümü :)

lblSonuc.Text = (Convert.ToDouble(txtSayi1.Text.Replace('.',',')) + Convert.ToDouble(txtSayi2.Text.Replace('.',','))).ToString();

Kolay gelsin...



Sayfayı Yazdır | Pencereyi Kapat

Bulletin Board Software by Web Wiz Forums version 8.03 - http://www.webwizforums.com
Copyright ©2001-2006 Web Wiz Guide - http://www.webwizguide.info