thucnguyenblog logo

C# Tutorial: Standard Calculator

thucnguyenit35
C#
07/11/2016 - 04:11:00

Code

//System Media //
using System.Media;
//Declaration of variables //
int clear = 1;
decimal result, mresult = 0;
string op;
//Eval function //
decimal eval(string op) {
  clear = 1;
  try {
   switch (op) {
    case "+":
     result = result + Convert.ToDecimal(label1.Text);
     break;
    case "-":
     result = result - Convert.ToDecimal(label1.Text);
     break;
    case "/":
     result = result / Convert.ToDecimal(label1.Text);
     break;
    case "*":
     result = result * Convert.ToDecimal(label1.Text);
     break;
    case "Mod":
     result = result % Convert.ToDecimal(label1.Text);
     break;
    default:
     result = Convert.ToDecimal(label1.Text);
     break;
   }
  } catch (System.OverflowException) {
   label2.Text = "";
   label2.Text = "Overflow";
   clear = 2;
   SystemSounds.Asterisk.Play();
  } catch (System.DivideByZeroException) {
   label2.Text = "";
   label2.Text = "Cannot divide by zero";
   clear = 2;
   SystemSounds.Asterisk.Play();
  }
  return result;
 }
 //Clear function //
int Clear(int cl) {
  switch (cl) {
   case 1:
    {
     label1.Text = "";
    }
    break;
   case 2:
    {
     label1.Text = "";label2.Text = "";op = "";
    }
    break;
   case 3:
    {
     label1.Text = "";label2.Text = label2.Text.Remove(label2.Text.IndexOf('r'));
    }
    break;
   case 4:
    {
     label1.Text = "";label2.Text = label2.Text.Remove(label2.Text.IndexOf('s'));
    }
    break;
   case 5:
    {
     label1.Text = "";label2.Text = label2.Text.Remove(label2.Text.LastIndexOf(' ') + 1);
    }
    break;
  }
  return 0;
 }
 //Button 0,1,2,3,4,5,6,7,8,9(replace the 0 with the other numbers) //
clear = Clear(clear);
if (label1.Text.Length < 28)
 label1.Text = label1.Text + "0";
else SystemSounds.Beep.Play();
//Button "." //
if (label1.Text.Contains('.')) {
 SystemSounds.Beep.Play();
} else label1.Text = label1.Text + ".";
//Button +,-,/,*,Mod(replace the + with the other operators) //
if (clear == 3 || clear == 4 || clear == 5)
 label2.Text = label2.Text + " + ";
else label2.Text = label2.Text + label1.Text + " + ";
label1.Text = eval(op).ToString();
op = "+";
//Button 1/x //
if (label2.Text.Contains("reciproc")) {
 label2.Text = label2.Text.Insert(label2.Text.IndexOf('r'), "reciproc(");
 label2.Text = label2.Text.Insert(label2.Text.IndexOf(')'), ")");
} else label2.Text = label2.Text + "reciproc(" + label1.Text + ")";
label1.Text = (1 / Convert.ToDecimal(label1.Text)).ToString();
clear = 3;
//Button √ //
if (label2.Text.Contains("sqrt")) {
 label2.Text = label2.Text.Insert(label2.Text.IndexOf('s'), "sqrt(");
 label2.Text = label2.Text.Insert(label2.Text.IndexOf(')'), ")");
} else label2.Text = label2.Text + "sqrt(" + label1.Text + ")";
label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text)).ToString();
clear = 4;
//Button % //
label1.Text = (result * Convert.ToDecimal(label1.Text) / 100).ToString();
label2.Text = label2.Text + label1.Text;
clear = 5;
//Button ± //
if (label1.Text.Contains('-')) {
 label1.Text = label1.Text.Remove(label1.Text.IndexOf('-'), 1);
} else label1.Text = "-" + label1.Text;
//Button = //
if (clear != 3 && clear != 4 && clear != 5)
 label2.Text = label2.Text + label1.Text;
label1.Text = eval(op).ToString();
clear = 2;
//Button C //
Clear(1);
clear = 1;
label1.Text = "0";
//Button CE //
Clear(2);
clear = 1;
label1.Text = "0";
result = 0;
//Button MS //
mresult = Convert.ToDecimal(label1.Text);
clear = 1;
label3.Text = "M";
//Button MR //
label1.Text = mresult.ToString();
clear = 1;
//Button M+ //
mresult = mresult + Convert.ToDecimal(label1.Text);
clear = 1;
label3.Text = "M";
//Button M- //
mresult = mresult - Convert.ToDecimal(label1.Text);
clear = 1;
label3.Text = "M";
//Button MC //
mresult = 0;
clear = 1;
label3.Text = "";
//Label1 TextChanged Event //
if (label1.Text.Length <= 20) {
 Font font = new Font("Consolas", 14, FontStyle.Regular);
 label1.Font = font;
} else if (label1.Text.Length > 20 && label1.Text.Length <= 26) {
 Font font = new Font("Consolas", 11, FontStyle.Regular);
 label1.Font = font;
} else {
 Font font = new Font("Consolas", 9, FontStyle.Regular);
 label1.Font = font;
}

 Author infomation:
Xin chào các bạn! Tôi tên là Thức, tôi sinh ra và lớn lên tại quê hương Yên Mỹ, Yên Mô, Ninh Bình, từ thời Trung học tôi đã yêu thích tin học và công nghệ. Tôi tốt nghiệp ngành Công nghệ thông tin tại Đại học Mở Hà Nội, hiện tại tôi đang là một Web Developer. Tôi tạo ra blog này nhằm mục đích chia sẻ kinh nghiệm, kiến thức mà tôi đã trải qua trong cuộc sống, vì thế sẽ có thể thiếu sót mong các bạn đóng góp để giúp tôi hoàn thiện hơn.