Quantcast
Channel: Windows Forms General forum
Viewing all articles
Browse latest Browse all 12583

hexCharCalc

$
0
0
I Need to modify the following code to be able to do floating point numbers Right now all I can handle is whole numbers with this calculator. Could someone please help me and modify my code to handle floating point numbers. thank You.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HexCalcChar
{
    public partial class Calc : Form
    {
        private string m_value;
        private ArrayList m_store;
        private System.Windows.Forms.Label lbRes;

        public Calc()
        {
            InitializeComponent();
            Decimal.Checked = true;
            m_value = "";
            m_store = new ArrayList();
        }
        private void AddOperatorToArray(Button bttn)
        {
            //the following changes the first part of number to int for hex dec oct bin.

            if (HexDecimal.Checked)
            {
            m_store.Add(baseToInt(m_value, 16));
            lbRes.Text += bttn.Text;
            m_value = "";
            m_store.Add(bttn.Text);
            //Period.Enabled = true;
            SetEnableOperatorBttns(false);
            }
            else if (Octal.Checked)
            {
                m_store.Add(baseToInt(m_value, 8));
                lbRes.Text += bttn.Text;
                m_value = "";
                m_store.Add(bttn.Text);
               // Period.Enabled = true;
                SetEnableOperatorBttns(false);
            }
            else if (Decimal.Checked)
            {
                m_store.Add(baseToInt(m_value, 10));
                lbRes.Text += bttn.Text;
                m_value = "";
                m_store.Add(bttn.Text);
                //Period.Enabled = true;
                SetEnableOperatorBttns(false);
            }
            else if (Binary.Checked)
            {
                m_store.Add(baseToInt(m_value, 2));
                lbRes.Text += bttn.Text;
                m_value = "";
                m_store.Add(bttn.Text);
                //Period.Enabled = true;
                SetEnableOperatorBttns(false);
            }
        }
        private void AddToArray(Button bttn)
        {
            m_value += bttn.Text;
            lbRes.Text += bttn.Text;
            SetEnableOperatorBttns(true);
        }

        private void Reset()
        {
            m_value = "";
            lbRes.Text = "";
            m_store.Clear();
            //Period.Enabled = true;
        }

        private void SetEnableOperatorBttns(bool enable)
        {
            
            Add.Enabled = enable;
            Subtract.Enabled = enable;
            Times.Enabled = enable;
            Divide.Enabled = enable;
            Equals.Enabled = enable;
        }
        private string intToBase(int input, int @base)
        {
            // the following converts base to int and int to base covers bases 2-36
            // does not cover floating point numbers or negative numbers 
            var digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

            if (@base < 2 || @base > 36)
            {
                throw new ArgumentOutOfRangeException("base", "Must specify a base between 2 and 36, inclusive");
            }

            if (input < @base && input >= 0)
            {
                return digits[input].ToString();
            }
            else
            {
                return intToBase(input / @base, @base) + digits[input % @base].ToString();
            }
        }

        private int baseToInt(string input, int @base)
        {
            var digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

            if (@base < 2 || @base > 36)
            {
                throw new ArgumentOutOfRangeException("base", "Must specify a base between 2 and 36, inclusive");
            }

            var digitsInBase = digits.Substring(0, @base);

            if (input.Any(c => !digitsInBase.Contains(c)))
            {
                throw new ArgumentOutOfRangeException("input", string.Format("Input is not a valid base {0} number", @base));
            }

            return (int)input.Select((c, i) => Math.Pow(@base, input.Length - (i + 1)) * digitsInBase.IndexOf(c)).Sum();

        }
        private void btn0_Click(object sender, EventArgs e)
        {
            AddToArray(btn0);
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            AddToArray(btn1);
        }

        private void btn2_Click(object sender, EventArgs e)
        {
            AddToArray(btn2);
        }

        private void btn3_Click(object sender, EventArgs e)
        {
            AddToArray(btn3);
        }

        private void btn4_Click(object sender, EventArgs e)
        {
            AddToArray(btn4);
        }

        private void btn5_Click(object sender, EventArgs e)
        {
            AddToArray(btn5);
        }

        private void btn6_Click(object sender, EventArgs e)
        {
            AddToArray(btn6);
        }

        private void btn7_Click(object sender, EventArgs e)
        {
            AddToArray(btn7);
        }

        private void btn8_Click(object sender, EventArgs e)
        {
            AddToArray(btn8);
        }

        private void btn9_Click(object sender, EventArgs e)
        {
            AddToArray(btn9);
        }

        private void HexA_Click(object sender, EventArgs e)
        {
            AddToArray(HexA);
                  
           }
           
        

        private void HexB_Click(object sender, EventArgs e)
        {
            AddToArray(HexB);
        
        }
        
        
        private void HexC_Click(object sender, EventArgs e)
        {
            AddToArray(HexC);
       

        }
        

        private void HexD_Click(object sender, EventArgs e)
        {
            AddToArray(HexD);
        

        }
        
        

        private void HexE_Click(object sender, EventArgs e)
        {
            AddToArray(HexE);
       
                
        }

        private void HexF_Click(object sender, EventArgs e)
        {
            AddToArray(HexF);
        
                
        }
              

        //private void Period_Click(object sender, EventArgs e)
        //{
            //AddToArray(Period);
            //Period.Enabled = false;
       // }

        private void Equals_Click(object sender, EventArgs e)
        {
            // the following convert second half of numbers to int from base and does math then converts back to base
            if (Decimal.Checked)
            {
                try
                {
                    m_store.Add(m_value);
                    m_store.Add(Equals.Text);

                    
                    int m_res = int.Parse(m_store[0].ToString());

                    
                    for (int i = 0; i < m_store.Count; i++)
                    {

                        if (m_store[i].ToString() == "+")
                        {
                            lbRes.Text = "";
                            m_res += int.Parse(m_store[i + 1].ToString());
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "-")
                        {
                            lbRes.Text = "";
                            m_res -= int.Parse(m_store[i + 1].ToString());
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "*")
                        {
                            lbRes.Text = "";
                            m_res *= int.Parse(m_store[i + 1].ToString());
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "/")
                        {
                            lbRes.Text = "";
                            m_res /= int.Parse(m_store[i + 1].ToString());
                            lbRes.Text = m_res.ToString();
                        }


                    }
                    m_store.Clear();
                    m_value = lbRes.Text;

                    //for (int i = 0; i < m_value.Length; i++)
                    //{
                      //  if (m_value[i].ToString() == ".")
                       // {
                       //     Period.Enabled = false;
                        //    break;
                        //}
                       // else
                        //{
                         //   Period.Enabled = true;
                        //}
                   // }

                    Equals.Enabled = false;
               }
                catch (Exception exception)
                {
                    Reset();
                    MessageBox.Show(exception.Message, "Error");
                }
            }
            else if (HexDecimal.Checked)
            {
                try
                {
                    m_store.Add(baseToInt(m_value, 16));
                    m_store.Add(Equals.Text);
                    int m_res = int.Parse(m_store[0].ToString());
                    for (int i = 0; i < m_store.Count; i++)
                    {
                        if (m_store[i].ToString() == "+")
                        {
                            lbRes.Text = "";
                            m_res += int.Parse(m_store[i + 1].ToString());
                            //string hexValue = intToBase(m_res, 16);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "-")
                        {
                            lbRes.Text = "";
                            m_res -= int.Parse(m_store[i + 1].ToString());
                            //string hexValue = intToBase(m_res, 16);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "*")
                        {
                            lbRes.Text = "";
                            m_res *= int.Parse(m_store[i + 1].ToString());
                            //string hexValue = intToBase(m_res, 16);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "/")
                        {
                            lbRes.Text = "";
                            m_res /= int.Parse(m_store[i + 1].ToString());
                            //string hexValue = intToBase(m_res, 16);
                            lbRes.Text = m_res.ToString();
                        }


                    }
                    m_store.Clear();
                    string hexValue = intToBase(m_res, 16);
                    lbRes.Text = hexValue;

                    //for (int i = 0; i < m_value.Length; i++)
                    //{
                      //  if (m_value[i].ToString() == ".")
                      //  {
                       //     Period.Enabled = false;
                        //    break;
                       // }
                       // else
                       // {
                        //    Period.Enabled = true;
                       // }
                   // }

                    Equals.Enabled = false;
                }
                catch (Exception exception)
                {
                    Reset();
                    MessageBox.Show(exception.Message, "Error");
                }             
            }
            else if (Octal.Checked)
            {
                try
                {
                    m_store.Add(baseToInt(m_value, 8));
                    m_store.Add(Equals.Text);

                    
                    int m_res = int.Parse(m_store[0].ToString(), System.Globalization.NumberStyles.HexNumber);

                    for (int i = 0; i < m_store.Count; i++)
                    {

                        if (m_store[i].ToString() == "+")
                        {
                            lbRes.Text = "";
                            m_res += int.Parse(m_store[i + 1].ToString());
                            //string octValue = intToBase(m_res, 8);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "-")
                        {
                            lbRes.Text = "";
                            m_res -= int.Parse(m_store[i + 1].ToString());
                            //string octValue = intToBase(m_res, 8);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "*")
                        {
                            lbRes.Text = "";
                            m_res *= int.Parse(m_store[i + 1].ToString());
                            //string octValue = intToBase(m_res, 8);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "/")
                        {
                            lbRes.Text = "";
                            m_res /= int.Parse(m_store[i + 1].ToString());
                            //string octValue = intToBase(m_res, 8);
                            lbRes.Text = m_res.ToString();
                        }


                    }
                    m_store.Clear();
                    string octValue = intToBase(m_res, 8);
                    lbRes.Text = octValue;

                    //for (int i = 0; i < m_value.Length; i++)
                    //{
                     //   if (m_value[i].ToString() == ".")
                      //  {
                      //      Period.Enabled = false;
                       //     break;
                       // }
                       // else
                       // {
                        //    Period.Enabled = true;
                       // }
                   // }

                    Equals.Enabled = false;
                }
                catch (Exception exception)
                {
                    Reset();
                    MessageBox.Show(exception.Message, "Error");
                }              
            }
            else if (Binary.Checked)
            {
                try
                {
                    m_store.Add(baseToInt(m_value, 2));
                    m_store.Add(Equals.Text);
                    //Divide.Enabled = false;
                    int m_res = int.Parse(m_store[0].ToString());

                    for (int i = 0; i < m_store.Count; i++)
                    {

                        if (m_store[i].ToString() == "+")
                        {
                            lbRes.Text = "";
                            m_res += int.Parse(m_store[i + 1].ToString());
                            //string binValue = intToBase(m_res, 2);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "-")
                        {
                            lbRes.Text = "";
                            m_res -= int.Parse(m_store[i + 1].ToString());
                            //string binValue = intToBase(m_res, 2);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "*")
                        {
                            lbRes.Text = "";
                            m_res *= int.Parse(m_store[i + 1].ToString());
                            //string binValue = intToBase(m_res, 2);
                            lbRes.Text = m_res.ToString();
                        }
                        else if (m_store[i].ToString() == "/")
                        {
                            lbRes.Text = "";
                            m_res /= int.Parse(m_store[i + 1].ToString());
                            //string binValue = intToBase(m_res, 2);
                            lbRes.Text = m_res.ToString();
                        }


                    }
                    m_store.Clear();
                    string binValue = intToBase(m_res, 2);
                    lbRes.Text = binValue;

                    //for (int i = 0; i < m_value.Length; i++)
                    //{
                    //    if (m_value[i].ToString() == ".")
                     //   {
                      //      Period.Enabled = false;
                      //      break;
                      //  }
                      //  else
                      //  {
                       //     Period.Enabled = true;
                       // }
                   // }

                    Equals.Enabled = false;
                }
                catch (Exception exception)
                {
                    Reset();
                    MessageBox.Show(exception.Message, "Error");
                }              
            }
            }

        private void Times_Click(object sender, EventArgs e)
        {
            AddOperatorToArray(Times);
        }

        private void Subtract_Click(object sender, EventArgs e)
        {
            AddOperatorToArray(Subtract);
        }

        private void Add_Click(object sender, EventArgs e)
        {
            AddOperatorToArray(Add);
        }

        private void Divide_Click(object sender, EventArgs e)
        {
            AddOperatorToArray(Divide);
        }

        private void ClearEntry_Click(object sender, EventArgs e)
        {
            Reset();
        }

        private void Percentage_Click(object sender, EventArgs e)
        {

        }

        private void Clear_Click(object sender, EventArgs e)
        {
          Reset();
        }

        private void HexDecimal_CheckedChanged(object sender, EventArgs e)
        {
            // the following sets buttons for proper bases
            //m_value = "";
            lbRes.Text = "";
            //Period.Enabled = false;
    btn0.Enabled = true;
    btn1.Enabled = true;
    btn2.Enabled = true;
    btn3.Enabled = true;
    btn4.Enabled = true;
    btn5.Enabled = true;
    btn6.Enabled = true;
    btn7.Enabled = true;
    btn8.Enabled = true;
    btn9.Enabled = true;
    HexA.Enabled = true;
    HexB.Enabled = true;
    HexC.Enabled = true;
    HexD.Enabled = true;
    HexE.Enabled = true;
    HexF.Enabled = true;

        }

        private void Decimal_CheckedChanged(object sender, EventArgs e)
        {

            //m_value = "";
            lbRes.Text = "";
           // Period.Enabled = false;
    btn0.Enabled = true;
    btn1.Enabled = true;
    btn2.Enabled = true;
    btn3.Enabled = true;
    btn4.Enabled = true;
    btn5.Enabled = true;
    btn6.Enabled = true;
    btn7.Enabled = true;
    btn8.Enabled = true;
    btn9.Enabled = true;
    HexA.Enabled = false;
    HexB.Enabled = false;
    HexC.Enabled = false;
    HexD.Enabled = false;
    HexE.Enabled = false;
    HexF.Enabled = false;
}

        private void Octal_CheckedChanged(object sender, EventArgs e)
        {
            //m_value = "";
            lbRes.Text = "";
           // Period.Enabled = false;
    btn0.Enabled = true;
    btn1.Enabled = true;
    btn2.Enabled = true;
    btn3.Enabled = true;
    btn4.Enabled = true;
    btn5.Enabled = true;
    btn6.Enabled = true;
    btn7.Enabled = true;
    btn8.Enabled = false;
    btn9.Enabled = false;
    HexA.Enabled = false;
    HexB.Enabled = false;
    HexC.Enabled = false;
    HexD.Enabled = false;
    HexE.Enabled = false;
    HexF.Enabled = false;
}

        private void Binary_CheckedChanged(object sender, EventArgs e)
        {
            //m_value = "";
            lbRes.Text = "";
           // Period.Enabled = false;
    btn0.Enabled = true;
    btn1.Enabled = true;
    btn2.Enabled = false;
    btn3.Enabled = false;
    btn4.Enabled = false;
    btn5.Enabled = false;
    btn6.Enabled = false;
    btn7.Enabled = false;
    btn8.Enabled = false;
    btn9.Enabled = false;
    HexA.Enabled = false;
    HexB.Enabled = false;
    HexC.Enabled = false;
    HexD.Enabled = false;
    HexE.Enabled = false;
    HexF.Enabled = false;
}

        
    }

}


michael r demulling


Viewing all articles
Browse latest Browse all 12583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>