예제 #1
0
        static void Main(string[] args)
        {
            int factorial(int n)
            {
                // Факториал отрицательного числа не считается :)
                Debug.Assert(n >= 0);

                // Если n превысит 10, то это может привести либо к целочисленному
                // переполнению результата, либо к переполнению стэка.
                Debug.Assert(n <= 10);

                if (n < 2)
                {
                    return(1);
                }
                Console.WriteLine(n);
                Console.WriteLine();
                return(factorial(n - 1) * n);
            }

            Console.WriteLine("Введите n");
            int n = Convert.ToInt32(Console.ReadLine());

            factorial(n);
            Console.WriteLine();
            Console.WriteLine("1) Исключение: неверно переданы данные");
            try
            {
                Train tr4 = new Train("голубой", 540, 0);
            }
            catch (TrainException ex)
            {
                Console.WriteLine("Ошибка в создании экземпляра класса Train: недопустимое значение для цены");
                Console.WriteLine($"Ошибка: {ex.Message}");
                Console.WriteLine($"Некорректное значение: {ex.value}");
                Console.WriteLine();
            }
            //исключение ( на ноль делить нельзя)
            Console.WriteLine();
            Console.WriteLine("2) Исключение на ноль делить нельзя");
            try
            {
                int x1 = 5;
                int y  = x1 / 0;
                Console.WriteLine($"Результат: {y}");
            }
            catch
            {
                Console.WriteLine("Возникло исключение!");
            }
            finally
            {
                Console.WriteLine("Блок finally");
            }
            Console.WriteLine();
            Train tr1 = new Train("голубой", 540, 1000);
            Train tr2 = new Train("зеленый", 80, 900);
            Train tr3 = new Train("желтый", 14, 400);

            Console.WriteLine();

            //исключения
            Console.WriteLine();
            Console.WriteLine("3) Исключение на ноль делить нельзя");
            int x = 0;

            try
            {
                int y = 100 / x;
            }
            catch (ArithmeticException e)
            {
                Console.WriteLine($"ArithmeticException Handler: {e}");
            }
            catch (Exception e)
            {
                Console.WriteLine($"Generic Exception Handler: {e}");
            }

            Console.WriteLine();
            //Print.IamPrinting(tr3);
            //tr1.ShowTrain(tr1.n, tr1.color, tr1.price);
            //tr2.ShowTrain(tr2.n, tr2.color, tr3.price);
            //tr3.ShowTrain(tr3.n, tr3.color, tr3.price);

            Console.WriteLine();
            Console.WriteLine("4) Исключение: неверно переданы данные");
            Console.WriteLine("Ошибка в создании экземпляра класса Car: недопустимое значение для расхода топлива");
            try
            {
                Car car7 = new Car("BMW", 5283, 5000, 2, 220);
            }
            catch (CarException ex)
            {
                Console.WriteLine("Ошибка: " + ex.Message);
            }
            Console.WriteLine();
            Car car1 = new Car("BMW", 5283, 5000, 6, 220);
            Car car2 = new Car("Lada", 8603, 4000, 5, 160);
            Car car3 = new Car("Audi", 1110, 9800, 4, 120);
            Car car4 = new Car("BMW", 5683, 5600, 6, 240);
            Car car5 = new Car("Lada", 5603, 4800, 5, 300);
            Car car6 = new Car("Audi", 3110, 9100, 7, 180);

            //car1.ShowCar(car1.mark, car1.number, car1.price, car1.dt, car1.speed);
            //car2.ShowCar(car2.mark, car2.number, car2.price, car2.dt, car2.speed);
            //car3.ShowCar(car3.mark, car3.number, car3.price, car3.dt, car3.speed);
            //car4.ShowCar(car4.mark, car4.number, car4.price, car4.dt, car4.speed);
            //car5.ShowCar(car5.mark, car5.number, car5.price, car5.dt, car5.speed);
            //car6.ShowCar(car6.mark, car6.number, car6.price, car6.dt, car6.speed);
            Console.WriteLine();
            //if (car1 is Train)
            //{
            //    Console.WriteLine("Ложь!");
            //}
            //else
            //    Console.WriteLine("Машина - не поезд!");

            int count = 0;

            object[] ListOfVehicle = new object[6];
            ListOfVehicle[0] = car1;
            ListOfVehicle[1] = car2;
            ListOfVehicle[2] = car3;
            ListOfVehicle[3] = car4;
            ListOfVehicle[4] = car5;
            ListOfVehicle[5] = car6;



            Console.WriteLine();
            //Console.WriteLine("Машины с расходом топлива больше 5 литров на 100 км.");
            //Console.WriteLine();

            //foreach (Car ts in ListOfVehicle)
            //{
            //    count++;
            //    if (ts.dt > 5) Console.WriteLine(count + ")" + ts.mark + " " + ts.number);
            //}
            //Console.WriteLine();
            //Console.Write("Введите желаемую скорость: ");
            //int max = Convert.ToInt32(Console.ReadLine());
            try
            {
                //Console.Write("Введите желаемую скорость: ");
                int max1 = 40;
                if (max1 < 50)
                {
                    Console.WriteLine("5) Исключение: неверно переданы данные");

                    throw new Exception("Слишком маленькая максимальная скорость");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Ошибка: {e.Message}");
            }
            Console.WriteLine();
            //Console.WriteLine("Машины с заданной максимальной скоростью.");
            //Console.WriteLine();
            //count = 0;
            //foreach (Car ts in ListOfVehicle)
            //{
            //    count++;
            //    if (ts.speed > max) Console.WriteLine(count + ")" + ts.mark + " " + ts.number + " max скорость:" + ts.speed);
            //}
            //Console.WriteLine();
            //Agent ag1 = new Agent();

            //ag1.Add();
            //ag1.Show();
            Console.WriteLine("6) Стандартное Исключение: выход за перделы массива");
            int index = 5, i = 0;

            int[] nums = new int[index];
            while (i < index)
            {
                nums[index] = i;
                Console.WriteLine(nums[index] + " ");
            }
            Console.ReadKey();
        }