C# – Conditional Statements

Условия и решения на задачите от лекция „Conditional Statements“

Задача 1. Compare Two Integers

Условие: Write an if statement that examines two integer variables and exchanges their values if the first one is greater than the second one.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _1.CompareTwoInteger
{
    class Program
    {
        static void Main()
        {
            int a, b, c;
            Console.Write("Enter the first number a:");
            bool isaInt = int.TryParse(Console.ReadLine(),out a);
            Console.Write("Enter the second number b:");
            bool isbInt = int.TryParse(Console.ReadLine(),out b);

            if (isaInt && isbInt)
            {
                if (a > b)
                {
                    c = a;
                    a = b;
                    b = c;
                }
                Console.WriteLine("a={0}",a);
                Console.WriteLine("b={0}",b);
            }
            else
            {
                Console.WriteLine("Not a valid entry! Some of the values are not integer!");
            }

        }
    }
}

Задача 2. Show The Sign Of The Product

Условие: Write a program that shows the sign (+ or -) of the product of three real numbers without calculating it. Use a sequence of if statements.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Globalization;

namespace _2.ShowTheSignOfTheProduct
{
    class Program
    {
        static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            double a, b, c;
            byte positiveNumbers=0;
            Console.Write("Enter the first number a:");
            bool isaDouble = double.TryParse(Console.ReadLine(), out a);
            Console.Write("Enter the second number b:");
            bool isbDouble = double.TryParse(Console.ReadLine(), out b);
            Console.Write("Enter the third number c:");
            bool iscDouble = double.TryParse(Console.ReadLine(), out c);

            if (isaDouble && isbDouble && iscDouble)
            {
                if (Math.Sign(a) == 1)
                {
                    positiveNumbers=(byte)(positiveNumbers + 1);
                }

                if (Math.Sign(b) == 1)
                {
                    positiveNumbers = (byte)(positiveNumbers + 1);
                }

                if (Math.Sign(c) == 1)
                {
                    positiveNumbers = (byte)(positiveNumbers + 1);
                }
                if (positiveNumbers % 2 == 0)
                {
                    Console.WriteLine("The sign of the product is (-)");
                }
                else
                {
                    Console.WriteLine("The sign of the product is (+)");
                }
            }
            else
            {
                Console.WriteLine("Not a valid entry! Some of the values are not double!");
            }

        }
    }
}

Задача 3. Find The Biggest Number Of Three

Условие: Write a program that finds the biggest of three integers using nested if statements.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _3.FindTheBiggestNumberOfThree
{
    class Program
    {
        static void Main()
        {
            int a, b, c,biggestNumber;
            Console.Write("Enter the first number a:");
            bool isaInt = int.TryParse(Console.ReadLine(), out a);
            Console.Write("Enter the second number b:");
            bool isbInt = int.TryParse(Console.ReadLine(), out b);
            Console.Write("Enter the third number c:");
            bool iscInt = int.TryParse(Console.ReadLine(), out c);

            if (isaInt && isbInt && iscInt)
            {
                if (a > b)
                {
                    if (b > c)
                    {
                        biggestNumber = a;
                    }
                    else
                    {
                        if (c > a)
                        {
                            biggestNumber = c;
                        }
                        else
                        {
                            biggestNumber = a;
                        }

                    }

                }
                else
                {
                    if (a > c)
                    {
                        biggestNumber = b;
                    }
                    else
                    {
                        if (c > b)
                        {
                            biggestNumber = c;
                        }
                        else
                        {
                            biggestNumber = b;
                        }

                    }
                }
                Console.WriteLine("The biggest number={0}", biggestNumber);
            }
            else
            {
                Console.WriteLine("Not a valid entry! Some of the values are not integer!");
            }
        }

Задача 4. Sort 3 Real Numbers

Условие: Sort 3 real values in descending order using nested if statements.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Globalization;

namespace _4.Sort3RealNumbers
{
    class Program
    {
        static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            double a, b, c;
            double[] array={0,0,0};
            Console.Write("Enter the first number a:");
            bool isaDouble = double.TryParse(Console.ReadLine(), out a);
            Console.Write("Enter the second number b:");
            bool isbDouble = double.TryParse(Console.ReadLine(), out b);
            Console.Write("Enter the third number c:");
            bool iscDouble = double.TryParse(Console.ReadLine(), out c);

            if (isaDouble && isbDouble && iscDouble)
            {
                if (a > b)
                {
                    if (b > c)
                    {
                        array[0] = a;
                        array[1] = b;
                        array[2] = c;
                    }
                    else
                    {
                        if (c > a)
                        {
                            array[0] = c;
                            array[1] = a;
                            array[2] = b;
                        }
                        else
                        {
                            array[0] = a;
                            array[1] = c;
                            array[2] = b;
                        }
                    }
                }
                else
                {
                    if (a > c)
                    {
                        array[0] = b;
                        array[1] = a;
                        array[2] = c;
                    }
                    else
                    {
                        if (c > b)
                        {
                            array[0] = c;
                            array[1] = b;
                            array[2] = a;
                        }
                        else
                        {
                            array[0] = b;
                            array[1] = c;
                            array[2] = a;
                        }

                    }
                }
                Console.WriteLine("The descending order is {0};{1};{2}", array[0],array[1],array[2]);
            }
            else
            {
                Console.WriteLine("Not a valid entry! Some of the values are not integer!");
            }
        }
    }
}

Задача 5. Print Name Of The Digit

Условие: Write program that asks for a digit and depending on the input shows the name of that digit (in English) using a switch statement.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _5.PrintNameOfTheDigit
{
    class Program
    {
        static void Main()
        {
            byte digit;
            Console.Write("Enter the digit:");
            bool isDigit = byte.TryParse(Console.ReadLine(), out digit);
            if (isDigit)
            {
                switch (digit)
                {
                    case 0: Console.WriteLine("zero"); break;
                    case 1: Console.WriteLine("one"); break;
                    case 2: Console.WriteLine("two"); break;
                    case 3: Console.WriteLine("three"); break;
                    case 4: Console.WriteLine("four"); break;
                    case 5: Console.WriteLine("five"); break;
                    case 6: Console.WriteLine("six"); break;
                    case 7: Console.WriteLine("seven"); break;
                    case 8: Console.WriteLine("eight"); break;
                    case 9: Console.WriteLine("nine"); break;
                    default: Console.WriteLine("This is not one digit entry!"); break;
                }

            }
            else
            {
                Console.WriteLine("Not a valid entry! This is not one digit entry!");
            }
        }
    }
}

Задача 6. Qadratic Equation

Условие: Write a program that enters the coefficients a, b and c of a quadratic equation a*x2 + b*x + c = 0 and calculates and prints its real roots. Note that quadratic equations may have 0, 1 or 2 real roots.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Globalization;

namespace _6.QadraticEquation
{
    class Program
    {
        static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            double a, b, c, discriminant, x1, x2;
            Console.Write("Enter the first coefficient a:");
            bool isaDouble = double.TryParse(Console.ReadLine(), out a);
            Console.Write("Enter the second coefficients b:");
            bool isbDouble = double.TryParse(Console.ReadLine(), out b);
            Console.Write("Enter the third coefficients c:");
            bool iscDouble = double.TryParse(Console.ReadLine(), out c);
            if (isaDouble && isbDouble && iscDouble)
            {
                discriminant = b * b - 4 * a * c;
                if (discriminant > 0)
                {
                    x1 = (-b + Math.Sqrt(discriminant)) / 2 * a;
                    x2 = (b + Math.Sqrt(discriminant)) / 2 * a;
                    Console.WriteLine("The real roots are:");
                    Console.WriteLine("x1={0}", x1);
                    Console.WriteLine("x2={0}", x2);
                }
                else if (discriminant == 0)
                {
                    x1 = x2 = -b / 2 * a;
                    Console.WriteLine("The real roots are:");
                    Console.WriteLine("x1={0}", x1);
                    Console.WriteLine("x2={0}", x2);
                }
                else
                {
                    Console.WriteLine("There are no real roots!");
                }
            }
            else
            {
                Console.WriteLine("Not a valid entry! Some of the numbers are not double!");
            }
        }
    }
}

Задача 7. Find The Greatest From 5 Variables

Условие: Write a program that finds the greatest of given 5 variables.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Globalization;

namespace _7.FindTheGreatestFrom5Variables
{
    class Program
    {
        static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            double[] array={0,0,0,0,0};
            bool isNumber=true;
            double greatest=double.MinValue;
            for (int i = 0; i < 5; i++) 			{ 			    Console.Write("Enter the {0} variable:",i+1);                 isNumber = double.TryParse(Console.ReadLine(), out array[i]);                 if(isNumber==false)                 {                     Console.WriteLine("Not a valid entry! This is not a number entry!");                     break;                 }                 else                 {                     if(array[i] > greatest)
                    {
                        greatest = array[i];
                    }
                }
			}
            if (isNumber)
            {
                Console.WriteLine("The greatest number = {0}", greatest);
            }
        }
    }
}

Задача 8. Int Double Or String Conversion

Условие: Write a program that, depending on the user’s choice inputs int, double or string variable. If the variable is integer or double, increases it with 1. If the variable is string, appends „*“ at its end. The program must show the value of that variable as a console output. Use switch statement.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Globalization;

namespace _8.IntDoubleOrStringConversion
{
    class Program
    {
        static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            double doubleNumber=0;
            int intNumber=0;
            string stringInput;
            byte entryType;
            Console.Write("Please do the data entry:");
            stringInput = Console.ReadLine();
            bool isDouble = double.TryParse(stringInput,out doubleNumber);
            if (isDouble)
            {
                if (doubleNumber % 1 == 0)
                {
                    intNumber = (int)doubleNumber;
                    entryType = 1;//Integer entry
                }
                else
                {
                    entryType = 2;//Double entry
                }
            }
            else
            {
                entryType = 3;//String entry
            }
            switch (entryType)
            {
                case 1: Console.WriteLine("Integer input. The output is:{0}", intNumber + 1); break;
                case 2: Console.WriteLine("Double input. The output is:{0}", doubleNumber + 1); break;
                case 3: Console.WriteLine("String input. The output is:{0}", stringInput + "*"); break;
            }
        }
    }
}

Задача 9. Check If The Sum Of Subset Is 0

Условие: We are given 5 integer numbers. Write a program that checks if the sum of some subset of them is 0. Example: 3, -2, 1, 1, 8 => 1+1-2=0.

Решение:

using System;
using System.Collections.Generic;

namespace _9.CheckIfTheSumOfSubsetIs0
{
    class Program
    {
        static void Main()
        {
            bool isInt=true;
            bool isElementZero=false;
            int[] intNumbers=new int[5];
            Console.Write("Enter a sequence of five integers delimited with \",\":");
            string[] strNumbers =(Console.ReadLine()).Split(',');
            if (strNumbers.Length == 5)
            {
                for (int i = 0; i < 5; i++)
                {
                    isInt = int.TryParse(strNumbers[i], out intNumbers[i]);
                    if (isInt == false)
                    {
                        break;
                    }
                    if (intNumbers[i]==0)
                    {
                        isElementZero = true;
                    }
                }
                if (isInt)
                {
                    if (isElementZero)
                    {
                        Console.WriteLine("There is a subset with sum equal to 0");
                    }
                    else
                    {
                        switch (FindZeroSum(intNumbers))
                        {
                            case true: Console.WriteLine("There is a subset with sum equal to 0"); break;
                            case false: Console.WriteLine("There is no subset with sum equal to 0"); break;
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Wrong entry! Some of the numbers are not integer!");
                }
            }
            else
            {
                Console.WriteLine("Wrong entry! The members of the sequence are less or more than 5!");
            }
        }
        private static bool FindZeroSum(int[] numbers)
        {
            int[] dynamicSums = new int[32];
            for (int i = 1; i < 5; i++)// numbers in the array
            {
                int j, k;
                for (j = 0; j < ((1 << i) - (i + 1)); j++)// the sum with already summed elements
                {

                    if ((dynamicSums[(1 << i) - (i + 1) + j] = numbers[i] + dynamicSums[j]) == 0)
                    {
                        return true;
                    }
                }
                for (k = 0; k < i; k++)// the sums with the new elements
                {
                    if ((dynamicSums[(1 << i) - (i + 1) + (j + k)] = numbers[k] + numbers[i]) == 0)
                    {
                        return true;
                    }
                }
            }
            return false;
        }
    }
}

Задача 10. Bonus Scores

Условие: Write a program that applies bonus scores to given scores in the range [1..9]. The program reads a digit as an input. If the digit is between 1 and 3, the program multiplies it by 10; if it is between 4 and 6, multiplies it by 100; if it is between 7 and 9, multiplies it by 1000. If it is zero or if the value is not a digit, the program must report an error.
Use a switch statement and at the end print the calculated new value in the console.

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _10.BonusScores
{
    class Program
    {
        static void Main()
        {
            int n;
            Console.Write("Enter a digit in the range of [1-9]:");
            bool isnInt = int.TryParse(Console.ReadLine(),out n);

            if (isnInt && n > 0 && n < 10)
            {
                switch (n)
                {
                    case (1): n = n * 10; break;
                    case (2): n = n * 10; break;
                    case (3): n = n * 10; break;
                    case (4): n = n * 100; break;
                    case (5): n = n * 100; break;
                    case (6): n = n * 100; break;
                    case (7): n = n * 1000; break;
                    case (8): n = n * 1000; break;
                    case (9): n = n * 1000; break;
                }
                Console.WriteLine(n);
            }
            else
            {
                Console.WriteLine("Not a valid entry!");
            }
        }
    }
}

Задача 11. Number To Text Converter

Условие: Write a program that converts a number in the range [0…999] to a text corresponding to its English pronunciation. Examples:
0 => „Zero“
273 => „Two hundred seventy three“
400 => „Four hundred“
501 => „Five hundred and one“
711 => „Seven hundred and eleven“

Решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _11.NumberToTextConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            int number;
            bool isNumberInt;
            string[,] numbers ={
                                     {"one","two","three","four","five","six","seven","eight","nine"},
                                     {"eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"},
                                     {"ten","twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"},
                              };

            Console.WriteLine("Enter the number:");
            isNumberInt = int.TryParse(Console.ReadLine(), out number);
            if (isNumberInt && number > -1 && number < 1000)             {                 if (number / 100 > 0)//Are there any hundreds?
                {
                    Console.Write("{0} hundred ", numbers[0, (number / 100) - 1]);
                    if ((number % 100) / 10 > 0)//Are there any tens?
                    {
                        Console.Write("and ");
                        if ((number % 100) / 10 == 1 && (number % 100) % 10 > 0)//Are the tens between 10 and 20?
                        {
                            Console.WriteLine(numbers[1, ((number % 100) % 10) - 1]);
                        }
                        else
                        {
                            Console.Write(numbers[2, ((number % 100) / 10) - 1]);
                            if ((number % 100) % 10 > 0)//Are there any units?
                            {
                                Console.WriteLine(" {0}", numbers[0, ((number % 100) % 10) - 1]);
                            }
                            else
                            {
                                Console.WriteLine();
                            }
                        }
                    }
                    else if (((number % 100) % 10) > 0)//Are there any units?
                    {
                        Console.Write("and ");
                        Console.WriteLine(numbers[0, ((number % 100) % 10) - 1]);
                    }
                    else
                    {
                        Console.WriteLine();
                    }
                }
                else if (number / 10 > 0 && number / 10 < 10)//Are there only tens and units?                 {                     if (number / 10 == 1 && number % 10 > 0)//Are the tens between 10 and 20?
                    {
                        Console.WriteLine(numbers[1, ((number % 100) % 10) - 1]);
                    }
                    else
                    {
                        Console.Write(numbers[2, (number / 10) - 1]);
                        if (number % 10 > 0)
                        {
                            Console.WriteLine(" {0}", numbers[0, ((number % 100) % 10) - 1]);
                        }
                        else
                        {
                            Console.WriteLine();
                        }
                    }
                }
                else if (number == 0)//Is the number 0?
                {
                    Console.WriteLine("zero");
                }
                else//Are there only units?
                {
                    Console.WriteLine(numbers[0, number - 1]);
                }
            }
            else
            {
                Console.WriteLine("Not a valid entry!");
            }
        }
   }
}

Оставете коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *