# C# For Dummies

## Chapter 5. Conditional Statements

Write an `if`- statement that takes two integer variables and exchanges their values if the first one is greater than the second one.

Solution
static void Main(string[] args)
{
Console.Write("Enter first number: ");
Console.Write("Enter second number: ");

if (a > b)
{
a = a + b;
b = a - b;
a = a - b;
}

Console.WriteLine("First number - {0}, Second number - {1}.", a, b);
}

2. Write a program that shows the sign (+ or -) of the product of three real numbers, without calculating it. Use a sequence of `if` operators.

Guidelines: A multiple of non-zero numbers has a positive product, if the negative multiples are even number. If the count of the negative numbers is odd, the product is negative. If at least one of the numbers is zero, the product is also zero. Use a counter `negativeNumbersCount` to keep the number of negative numbers. Check each number whether it is negative and change the counter accordingly. If some of the numbers is 0, print “0” as result (the zero has no sign). Otherwise print “+” or “-” depending on the condition ` (negativeNumbersCount % 2 == 0) `.

Solution
3. Write a program that finds the biggest of three integers, using nested `if` statements.

Guidelines: Use nested `if`-statements, first checking the first two numbers then checking the bigger of them with the third.

Solution
4. Sort 3 real numbers in descending order. Use nested `if` statements.

Guidelines: First find the smallest of the three numbers, and then swap it with the first one. Then check if the second is greater than the third number and if yes, swap them too.
Another approach is to check all possible orders of the numbers with a series of `if-else` checks: `a≤b≤c, a≤c≤b, b≤a≤c, b≤c≤a, c≤a≤b` and `c≤b≤a`.
A more complicated and more general solution of this problem is to put the numbers in an array and use the `Array.Sort(…)` method.

Solution
5. Write a program that asks for a digit (0-9), and depending on the input, shows the digit as a word in a Bulgarian or English. Use a `switch` statement.

Guidelines: Just use a `switch` statement to check for all possible digits.

Solution
static void Main(string[] args)
{
Console.Write("Enter first number: ");

switch (number)
{
case 0: Console.WriteLine("Nula"); break;
case 1: Console.WriteLine("Edno"); break;
case 2: Console.WriteLine("Dve"); break;
case 3: Console.WriteLine("Tri"); break;
case 4: Console.WriteLine("Chetiri"); break;
case 5: Console.WriteLine("Pet"); break;
case 6: Console.WriteLine("Shest"); break;
case 7: Console.WriteLine("Sedem"); break;
case 8: Console.WriteLine("Osem"); break;
case 9: Console.WriteLine("Devet"); break;
default: Console.WriteLine("Wrong input"); break;
}
}

6. Write a program that gets the coefficients `a, b` and `c` of a quadratic equation: `ax2 + bx + c`, calculates and prints its real roots (if they exist). Quadratic equations may have 0, 1 or 2 real roots.

Guidelines: Look for the formulas for solving a quadratic equation.

Solution
7. Write a program that finds the greatest of given 5 numbers.

Guidelines: Use nested `if` statements. You could use the loop structure `for`, which you could read about on the Internet.

Solution
static void Main(string[] args)
{
Console.Write("Enter first number: ");
Console.Write("Enter second number: ");
Console.Write("Enter third number: ");
Console.Write("Enter fourth number: ");
Console.Write("Enter fifth number: ");

if (a < b) a = b;
if (a < c) a = c;
if (a < d) a = d;
if (a < e) a = e;

Console.WriteLine("{0} is the biggest number.", a);
}

8. Write a program that, depending on the user’s choice, inputs `int, double` or `string` variable. If the variable is `int` or `double`, the program increases it by 1. If the variable is a `string`, the program appends \"*\" at the end. Print the result at the console. Use `switch` statement.

Guidelines: First input a variable, which indicates what type will be the input, i.e. by entering 0 the type is `int`, by 1 is `double` and by 2 is `string`.

Solution
9. We are given 5 integer numbers. Write a program that finds those subsets whose sum is 0. Examples:
- If we are given the numbers {3, -2, 1, 1, 8}, the sum of -2, 1 and 1 is 0.
>- If we are given the numbers {3, 1, -7, 35, 22}, there are no subsets with sum 0.

Guidelines: Use nested `if` statements or series of 31 comparisons, in order to check all the sums of the 31 subsets of the given numbers (without the empty one). Note that the problem in general (with `N` numbers) is complex and using loops will not be enough to solve it.

Solution
10. Write a program that applies bonus points to given scores in the range [1…9] by the following rules:
- If the score is between 1 and 3, the program multiplies it by 10.
- If the score is between 7 and 9, the program multiplies it by 1000.
- If the score is 0 or more than 9, the program prints an error message.
Guidelines: Use `switch` statement or a sequence of `if-else` constructs and at the end print at the console the calculated points.

Solution
Write a program that converts a number in the range [0…999] to words, corresponding to the English pronunciation. Examples:
- 0 → "Zero"
- 12 → "Twelve"
- 98 → "Ninety eight"
- 273 → "Two hundered seventy three"
- 400 → "Four hundred"
- 501 → "Five hundred and one"
- 711 → "Seven hundered and eleven"

Guidelines: Use nested `switch` statements. Pay special attention to the numbers from 0 to 19 and those that end with 0. There because printing a single digit is part of printing a 2-digit number which is part of printing 3-digit number.

Solution