static void Main() { try { var subString = MathCalculations.Subsequence("Hello!".ToCharArray(), 2, 3); Console.WriteLine(subString); var subArray = MathCalculations.Subsequence(new int[] { -1, 3, 2, 1 }, 0, 2); Console.WriteLine(String.Join(" ", subArray)); var allArray = MathCalculations.Subsequence(new int[] { -1, 3, 2, 1 }, 0, 4); Console.WriteLine(String.Join(" ", allArray)); var emptyArray = MathCalculations.Subsequence(new int[] { -1, 3, 2, 1 }, 0, 0); Console.WriteLine(String.Join(" ", emptyArray)); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } try { Console.WriteLine(StringManipulations.ExtractEnding("I love C#", 2)); Console.WriteLine(StringManipulations.ExtractEnding("Nakov", 4)); Console.WriteLine(StringManipulations.ExtractEnding("beer", 4)); Console.WriteLine(StringManipulations.ExtractEnding("Hi", 100)); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } // The app should not throw exceptions when checking whether number is prime. var numbers = new int[] { 23, 33 }; foreach (var number in numbers) { bool isPrime = MathCalculations.CheckPrime(number); if (isPrime) { Console.WriteLine($"{number} is prime!"); } else { Console.WriteLine($"{number} is not prime!"); } } List <Exam> peterExams = new List <Exam>() { new SimpleMathExam(2), new CSharpExam(55), new CSharpExam(100), new SimpleMathExam(1), new CSharpExam(0), }; Student peter = new Student("Peter", "Petrov", peterExams); double peterAverageResult = peter.CalcAverageExamResultInPercents(); Console.WriteLine("Average results = {0:p0}", peterAverageResult); }