Control-Based Application: Algebra

 Description
 This application was created to explore some characteristics of text boxes and button controls. To do this, we create some methods used to calculate: The factorial of a number The permutation of two numbers The combinatorial of two numbers We display the results in text boxes after the user has entered the necessary number(s) and clicked a button.
 Practical Learning: Creating the Application
1. Start Microsoft Visual C# and create a Windows Application named Algebra2
3. In the Templates list, make sure Class is selected.
Change the Name to Algebra and click Add
4. Change the file as follows:

 ```using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Algebra2 { public class Algebra { public static long Factorial(long x) { if (x <= 1) return 1; else return x * Factorial(x - 1); } public static long Permutation(long n, long r) { if (r == 0) return 0; if (n == 0) return 0; if ((r >= 0) && (r <= n)) return Factorial(n) / Factorial(n - r); else return 0; } public static long Combinatorial(long a, long b) { if (a <= 1) return 1; return Factorial(a) / (Factorial(b) * Factorial(a - b)); } } }```
5. In the Solution Explorer, right-click Form1.cs and click Rename
6. Type Exercise.cs and press Enter twice (to save and to open the form)
7. Click the body of the form to make sure it is selected.
In the Properties window, change the following characteristics
FormBorderStyle: FixedDialog
Text: Factorial, Permutation, and Combination
Size: 304, 208
StartPosition: CenterScreen
MaximizeBox: False
MinimizeBox: False
8. In the Containers section of the Toolbox, click TabControl and click the form
9. On the form, right-click the right side of tabPage2 and click Add Page
10. Based on what we learned in Lesson 24, design the form as follows:

 Control Text Name Additional Properties TabControl tclAlgebra HotTrack: True Location: 12, 12 Size: 304, 235 TabPage Factorial tabFactorial Label Number: Location: 22, 21 TextBox txtNumber TextAlign: Right Location: 88, 18 Size: 50, 20 Label Result: Location: 22, 56 TextBox txtFactorial TextAlign: Right Location: 88, 54 Size: 140, 20
 Control Text Name Location Size TabPage Permutation tabPermutation Label n: 22, 21 TextBox txtPermutationN 88, 18 50, 20 Label r: 22, 56 TextBox txtPermutationR 88, 54 50, 20 Label P(n, r): 22, 92 TextBox txtPermutation 88, 90 140, 20
 Control Text Name Location Size TabPage Combination tabCombination Label n: 22, 21 TextBox txtCombinationN 88, 18 50, 20 Label r: 22, 56 TextBox txtCombinationR 88, 54 50, 20 Label C(n, r): 22, 92 TextBox txtCombination 88, 90 140, 20
11. Save the form
12. In the combo box on top of the Properties window, select tabFactorial
13. From the Common Controls section of the Toolbox, click Button and click on the right side of the top text box
14. Access each tab page and add a button to it
15. Add a button to the form and under the tab control
16. Complete the design of the form as follows:

 Control Text Name Button Calculate btnCalcFactorial Button Close btnClose
 Control Text Name Button Calculate btnCalcPermutation
 Control Text Name Button Calculate btnCalcCombination
17. Access the Factorial tab page and double-click its Calculate button
18. Implement the event as follows:

 ```private void btnCalcFactorial_Click(object sender, EventArgs e) { long number = 0; long result; try { number = long.Parse(txtFactNumber.Text); result = Algebra.Factorial(number); txtFactorial.Text = result.ToString(); } catch (FormatException) { MessageBox.Show("Invalid Number"); } }```
20. Access the Permutation tab page and double-click its Calculate button
21. Implement the event as follows:

 ```private void btnCalcPermutation_Click(object sender, EventArgs e) { long n = 0, r = 0; long result; try { n = long.Parse(txtPermutationN.Text); } catch (FormatException) { MessageBox.Show("Invalid Number"); } try { r = long.Parse(txtPermutationR.Text); result = Algebra.Permutation(n, r); txtPermutation.Text = result.ToString(); } catch (FormatException) { MessageBox.Show("Invalid Number"); } }```
23. Access the Combination tab page and double-click its Calculate button
24. Implement the event as follows:

 ```private void btnCalcCombination_Click(object sender, EventArgs e) { long n = 0, r = 0; long result; try { n = long.Parse(txtCombinationN.Text); } catch (FormatException) { MessageBox.Show("Invalid Number"); } try { r = long.Parse(txtCombinationR.Text); result = Algebra.Combinatorial(n, r); txtCombination.Text = result.ToString(); } catch (FormatException) { MessageBox.Show("Invalid Number"); } }```
26. Implement the event as follows:

 ```private void btnClose_Click(object sender, EventArgs e) { Close(); }```
27. Execute the application to test the calculations