ARTICLE

Scientific Calculator in C#

Posted by Rajshree Mittal Articles | Visual C# July 08, 2009
The attached project is a Scientific Calculator application developed using C#.NET. It allows you to calculate sin, cos, tan, sin inverse , cos inverese, tan inverse with radian or degree. It also has square root, cubing, squaring and many more features.
Reader Level:
Download Files:
 

This is a Windows Forms application developed on C#. Download the attached project and run in Visual Studio 2005.

Here is the code looks like:

using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
namespace
calculator
{
public partial class Form1 : Form
{
public string no1,constfun;
// public int no2;
public bool inputstatus;

public Form1()
{
InitializeComponent();
no1 =
"";
textBox1.ReadOnly =
true; //read only mode of textbox
textBox1.RightToLeft =
RightToLeft.Yes; 
radioButton1.Checked =
true;

}
//putting value of button text into text box and a variable inputstatus to textbox
#region putting value
private void button1_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button1.Text;
}
else
{
textBox1.Text = button1.Text;
inputstatus =
true;
}
}
private void button6_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button6.Text;
}
else
{
textBox1.Text = button6.Text;
inputstatus =
true;
}

}
private void button7_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button7.Text;
}
else
{
textBox1.Text = button7.Text;
inputstatus =
true;
}


}
private void button8_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button8.Text;
}
else
{
textBox1.Text = button8.Text;
inputstatus =
true;
}
}
private void button11_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button11.Text;
}
else
{
textBox1.Text = button11.Text;
inputstatus =
true;
}
}
private void button12_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button12.Text;
}
else
{
textBox1.Text = button12.Text;
inputstatus =
true;
}
}
private void button13_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button13.Text;
}
else
{
textBox1.Text = button13.Text;
inputstatus =
true;
}
}
private void button16_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button16.Text;
}
else
{
textBox1.Text = button16.Text;
inputstatus =
true;
}
}
private void button17_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button17.Text;
}
else
{
textBox1.Text = button17.Text;
inputstatus =
true;
}
}
//when 9 is pressed
private void button18_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button18.Text;
}
else
{
textBox1.Text = button18.Text;
inputstatus =
true;
}
}
//. button
private void button2_Click(object sender, EventArgs e)
{
if (inputstatus == true)
{
textBox1.Text += button2.Text;
}
else
{
textBox1.Text = button2.Text;
inputstatus =
true;
}
}
#endregion putting vaules
//Add Operator
private void button3_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"+"; //used in switch case to check what want to do add

}
//subtract
private void button9_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"-"; //want to subtract

}
//multiply
private void button10_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"*"; //want to multiply
}
//divide
private void button15_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"/";


}
//a user defined fun
private void funcal()
{
switch (constfun)
{
case "+":
textBox1.Text=
Convert.ToString( Convert.ToInt32(no1) + Convert.ToInt32(textBox1.Text)); //ading values of textbox

break;
case "-":
textBox1.Text =
Convert.ToString(Convert.ToInt32(no1) - Convert.ToInt32(textBox1.Text));

break;
case "*":
textBox1.Text =
Convert.ToString(Convert.ToInt32(no1) * Convert.ToInt32(textBox1.Text));
break;
case "/":
if (textBox1.Text == "0")
{
textBox1.Text =
"infinity";
}
else
{
textBox1.Text =
Convert.ToString(Convert.ToInt32(no1) / Convert.ToInt32(textBox1.Text));
}
break;
case "x^y":
textBox1.Text =
Convert.ToString(System.Math.Pow(Convert.ToDouble(no1), Convert.ToDouble(textBox1.Text)));
break;
case "mod": textBox1.Text = Convert.ToString(Convert.ToDouble(no1) % Convert.ToDouble(textBox1.Text));
break;
case "nPr": int varn, var2,var3; //variable declaration
varn = factorial(
Convert.ToInt32(no1)); //calling factorial function
var2=factorial(
Convert.ToInt32(no1)-Convert.ToInt32(textBox1.Text));
textBox1.Text=
Convert.ToString(varn/var2); //storing or showing result of factorial variables
break;
case "nCr":
varn = factorial(
Convert.ToInt32(no1));
var2=factorial(
Convert.ToInt32(no1)-Convert.ToInt32(textBox1.Text));
var3 = factorial(
Convert.ToInt32(textBox1.Text));
textBox1.Text=
Convert.ToString(varn/(var3*var2));
break;


}
}

//a user defined function to calculate factorial
private int factorial(int x)
{
int i = 1; //initialization values of i to 1
for (int s = 1; s <= x; s++)
{
i = i * s;
}
return i;
}

//when = button is pressed
private void button5_Click(object sender, EventArgs e)
{

funcal(); //calling of function
inputstatus =
false;
}

//when AC is pressed to power on
private void button14_Click(object sender, EventArgs e)
{
textBox1.Enabled =
true;
textBox1.Text =
"0";

}

//calculating x raise to power 2
private void button19_Click(object sender, EventArgs e)
{
textBox1.Text =
Convert.ToString(Convert.ToInt32(textBox1.Text) * Convert.ToInt32(textBox1.Text));
inputstatus =
false;
}
//calculating x raise to power 3
private void button20_Click(object sender, EventArgs e)
{
textBox1.Text =
Convert.ToString(Convert.ToInt32(textBox1.Text) * Convert.ToInt32(textBox1.Text) * Convert.ToInt32(textBox1.Text));
inputstatus =
false;
}
//calculating squareroot
private void button21_Click(object sender, EventArgs e)
{
textBox1.Text =
Convert.ToString(System.Math.Sqrt(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}

//x raise to power y
private void button22_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"x^y";
}

//when CE button is pressed
private void button23_Click(object sender, EventArgs e)
{
textBox1.Text =
String.Empty;
inputstatus =
true;
}
//To set Pi value
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text =
"3.141592654";
}
//sin function
private void button24_Click(object sender, EventArgs e)
{
//if radian is selected
if (radioButton3.Checked==true)
{
textBox1.Text =
Convert.ToString(System.Math.Sin(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}
//if degree is selected
else
{
textBox1.Text =
Convert.ToString(System.Math.Sin((Convert.ToDouble(System.Math.PI)/180)*(Convert.ToDouble(textBox1.Text))));
inputstatus =
false;
}
}

//cos function
private void button25_Click(object sender, EventArgs e)
{
//radian selected
if (radioButton3.Checked==true)
{
textBox1.Text =
Convert.ToString(System.Math.Cos(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}
//degree selected
else
{
textBox1.Text =
Convert.ToString(System.Math.Cos((Convert.ToDouble(System.Math.PI)/180)*(Convert.ToDouble(textBox1.Text))));
inputstatus =
false;
}
}

//tan function
private void button26_Click(object sender, EventArgs e)
{

//radian selected
if (radioButton3.Checked==true)
{
textBox1.Text =
Convert.ToString(System.Math.Tan(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}
//degree selected
else
{
textBox1.Text =
Convert.ToString(System.Math.Tan((Convert.ToDouble(System.Math.PI)/180)*(Convert.ToDouble(textBox1.Text))));
inputstatus =
false;
}

}

//calculationg 1/x
private void button27_Click(object sender, EventArgs e)
{
textBox1.Text =
Convert.ToString(Convert.ToDouble(1.0 / Convert.ToDouble(textBox1.Text)));
inputstatus =
false;

}

//calculting x!
private void button28_Click(object sender, EventArgs e)
{
int var1=1;
for (int i = 1; i <= Convert.ToInt16(textBox1.Text); i++)
{
var1 = var1 * i;
}
textBox1.Text =
Convert.ToString(var1);
inputstatus =
false;
}
//calculationg log10
private void button29_Click(object sender, EventArgs e)
{
textBox1.Text=
Convert.ToString(System.Math.Log10(Convert.ToDouble(textBox1.Text)));
inputstatus=
false;
}

//calculation natural log
private void button30_Click(object sender, EventArgs e)
{
textBox1.Text=
Convert.ToString(System.Math.Log(Convert.ToDouble(textBox1.Text)));
inputstatus=
false;
}



//backspace key is presseed
private void button31_Click(object sender, EventArgs e)
{
no1= textBox1.Text;
int n=no1.Length;
textBox1.Text=(no1.Substring(0,n-1)); //removing values one by one onclick of backspace button
}
//when mod operator(%) is presseed
private void button32_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"mod"; //explaned earlier to calculate mod in fncalc()
}
//coding for +/- key
private void button33_Click(object sender, EventArgs e)
{
textBox1.Text =
Convert.ToString(-Convert.ToInt32(textBox1.Text));
inputstatus =
false;
}

//Sin inverese fun
private void button35_Click(object sender, EventArgs e)
{
if (radioButton3.Checked==true)
{
textBox1.Text =
Convert.ToString(System.Math.Asin(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}
else
{
textBox1.Text =
Convert.ToString(System.Math.Asin((Convert.ToDouble(System.Math.PI)/180)*(Convert.ToDouble(textBox1.Text))));
inputstatus =
false;
}
}
//cos inverese fun
private void button34_Click(object sender, EventArgs e)
{
if (radioButton3.Checked==true)
{
textBox1.Text =
Convert.ToString(System.Math.Acos(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}
else
{
textBox1.Text =
Convert.ToString(System.Math.Acos((Convert.ToDouble(System.Math.PI)/180)*(Convert.ToDouble(textBox1.Text))));
inputstatus =
false;
}
}
//tan inverese fun
private void button36_Click(object sender, EventArgs e)
{
if (radioButton3.Checked == true)
{
textBox1.Text =
Convert.ToString(System.Math.Atan(Convert.ToDouble(textBox1.Text)));
inputstatus =
false;
}
else
{
textBox1.Text =
Convert.ToString(System.Math.Atan((Convert.ToDouble(System.Math.PI)/180) * (Convert.ToDouble(textBox1.Text))));
inputstatus =
false;
}
}

private void radioButton3_CheckedChanged(object sender, EventArgs e)
{

}

//permutation
private void button37_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"nPr";
}
//combination
private void button38_Click(object sender, EventArgs e)
{
no1 = textBox1.Text;
textBox1.Text =
"";
constfun =
"nCr";

}
private void Form1_Load(object sender, EventArgs e)
{
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
}

//coding for off button
private void button39_Click(object sender, EventArgs e)
{
textBox1.Enabled =
false;
textBox1.Text =
"";
inputstatus =
false;
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
}
private void userControl11_Load(object sender, EventArgs e)
{
Application.Exit();
}
private void userControl11_Load_1(object sender, EventArgs e)
{
}
private void userControl11_Load_2(object sender, EventArgs e)
{
}


}
}





//control1 coding
//control is created for custom menubar
//custom user control
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace control1
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();//applcation exit on click of close button

        }
    }
}


Rajcalc.JPG

COMMENT USING

Trending up