Friday, May 12, 2006

Fibonacci Sequence number calculation (int16)

this chunk of code calculates Fibonacci Sequence number base on user input using C#.NET:

private void btnGetNumber_Click(object sender, EventArgs e)
{
try
{
if (txtInput.Text == "" txtInput.Text == null) //to avoid empty input
{
MessageBox.Show("Please input a positive Integer between 0 and 62", "Error: Empty Input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtInput.Clear();
txtInput.Focus();
}
else
{
int theNum = Convert.ToInt16(txtInput.Text);
if (theNum == 0) //to avoid zero input
{ MessageBox.Show("Please input a positive Integer between 0 and 62", "Error: Zero Input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtInput.Clear();
txtInput.Focus();
}
else if (theNum <> 46) //to avoid overflow result, if the variables are defined for bigger values, this condition should be commented out and use OverflowException
{
MessageBox.Show("Please input a positive Integer between 0 and 62", "Error: Result Overflew", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtInput.Clear();
txtInput.Focus();
}
else //all conditions met, calculate the result
{
int numA = 0; int numB = 1; int numC;
for (int i = 1; i <= theNum; i++)

{
numC = numA;
numA = numB;
numB = numC + numB;
}
//print result to screen
lblAnswer.Text = numA.ToString();
} } }
//uncomment the code below for catching overflow exception when the variables are
//defined as uint64 or ulong, that is, too big to guess the limit
//catch (OverflowException)
//{
// MessageBox.Show("Please try again with another smaller positive Integer", "Error: Result OverFlow", MessageBoxButtons.OK, MessageBoxIcon.Error);
// txtInput.Clear();
// txtInput.Focus();
//}
//throw error for string or decimal inputs
catch (FormatException)
{
MessageBox.Show("Please input a positive Integer between 0 and 62", "Error: String or decimal Input", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtInput.Clear();
txtInput.Focus();
}
//throw error for unknown errors
catch (Exception ee) { MessageBox.Show("Error: Unknown", ee.Message); Application.Exit(); } }

No comments: