static void Main(string[] args)
        {
            Console.WriteLine("Hello Pascal's Triangle World!");
            Console.WriteLine("");
            //       1
            //      1 1
            //     1 2 1
            //    1 3 3 1
            //   1 4 6 4 1
            //  1 5 10 10 5 1
            // 1 6 15 20 15 6 1
            TriangleClass triangle = new TriangleClass();

            /*
             * Console.Write("Please enter an index to display that array: ");
             * int inputFromUserArray = int.Parse(Console.ReadLine());
             * foreach(var item in triangle.TriangleArray(inputFromUserArray))
             * {
             *  Console.WriteLine(item.ToString());
             * }
             */
            Console.Write("Please enter an index number to print the triangle:  ");
            int inputFromUserTriangle = int.Parse(Console.ReadLine());

            triangle.PrintPascal(inputFromUserTriangle + 1);

            Console.ReadLine();
        }
Ejemplo n.º 2
0
        public void Analyze6()
        {
            sides = new List <int> {
                4, 6, 8
            };

            StringAssert.AreEqualIgnoringCase(expectedScalene, TriangleClass.Analyze(ref sides));
        }
Ejemplo n.º 3
0
        public void Analyze4()
        {
            sides = new List <int> {
                2, 3, 3
            };

            StringAssert.AreEqualIgnoringCase(expectedIsosceles, TriangleClass.Analyze(ref sides));
        }
Ejemplo n.º 4
0
        public void Analyze3()
        {
            sides = new List <int> {
                5, 5, 5
            };

            StringAssert.AreEqualIgnoringCase(expectedEquilateral, TriangleClass.Analyze(ref sides));
        }
Ejemplo n.º 5
0
        public void Analyze1()
        {
            sides = new List <int> {
                1, 2, 3
            };

            StringAssert.AreEqualIgnoringCase(expectedNoTriangle, TriangleClass.Analyze(ref sides));
        }
Ejemplo n.º 6
0
        public static void Main(string[] args)
        {
            WorkWithConsoleClass workWithConsoleClass = new WorkWithConsoleClass();

            TriangleClass triangle = new TriangleClass(workWithConsoleClass.Input());

            workWithConsoleClass.Output(triangle.GetArea(), triangle.GetPerimeter());
        }
Ejemplo n.º 7
0
        public void CheckSides_for_Not_int_Number()
        {
            double a        = 1.4;
            double b        = 2;
            double c        = 3;
            bool   expected = true;

            TriangleClass obj    = new TriangleClass();
            bool          actual = obj.checkSides(a, b, c);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 8
0
        public void CheckSides_for_Correct_Numbers()
        {
            double a        = 3;
            double b        = 5;
            double c        = 7;
            bool   expected = true;

            TriangleClass obj    = new TriangleClass();
            bool          actual = obj.checkSides(a, b, c);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 9
0
        public void CheckSides_for_Not_int_Number_and_Negative_and_Zero()
        {
            double a        = 0;
            double b        = 2.7;
            double c        = -3.1;
            bool   expected = false;

            TriangleClass obj    = new TriangleClass();
            bool          actual = obj.checkSides(a, b, c);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 10
0
        public void CheckSides_for_Zero_Number()
        {
            double a        = 0;
            double b        = 10;
            double c        = 4;
            bool   expected = false;


            TriangleClass obj    = new TriangleClass();
            bool          actual = obj.checkSides(a, b, c);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 11
0
        public void CheckZero_for_Negative_Number()
        {
            double a        = -2;
            double b        = 2;
            double c        = 4;
            bool   expected = false;


            TriangleClass obj    = new TriangleClass();
            bool          actual = obj.checkZero(a, b, c);

            Assert.AreEqual(expected, actual);
        }
        public void Triangle_PerimeterCalculateTest()
        {
            // arrange
            double sideA    = 2;
            double sideB    = 2;
            double sideC    = 2;
            double expected = 6;

            // act
            TriangleClass item = new TriangleClass();

            double actual = item.PerimeterCalculate(sideA, sideB, sideC);

            // assert
            Assert.AreEqual(expected, actual);
        }
        public void Triangle_AreaCalculateTest()
        {
            // arrange
            double sideA    = 2;
            double sideB    = 2;
            double sideC    = 2;
            int    expected = (int)(1.73 * 100.0); //убираем дробную часть

            // act
            TriangleClass item = new TriangleClass();

            double actual_double = item.AreaCalculate(sideA, sideB, sideC);
            int    actual        = (int)(actual_double * 100.0); //убираем дробную часть

            // assert
            Assert.AreEqual(expected, actual);
        }
        public void Triangle_ParceParametersTest()
        {
            // arrange
            string[] parameters = new string[]
            {
                "\"type\":triangle",
                "\"side_a\":2",
                "\"side_b\":2",
                "\"side_c\":2",
            };
            double expectedPerimeter = 6;

            // act
            TriangleClass item = new TriangleClass();

            item.ParceParameters(parameters);

            double actual = item.PerimeterGet();

            // assert
            Assert.AreEqual(expectedPerimeter, actual);
        }
        //**********************************************************************************************
        // РАЗБОР ДОКУМЕНТА
        //**********************************************************************************************
        /// <summary>
        /// Получение данных из документа.
        /// </summary>
        /// <param name="document"></param>
        void DataParcer(FlowDocument document)
        {
            List <FigureClass> Shapes = new List <FigureClass> {
            };                                                                             //Список фигур в документе.
            List <string> blocks      = new List <string> {
            };                                                                             //Промежуточный список для хранения блоков с параметрами для каждой фигуры.
            List <DeltaShapesValueClass> deltaShapes = new List <DeltaShapesValueClass>(); //Список для расчета средних значений периметра и площади для каждого типа фигур.

            //0. Преобразуем документ в строку
            String input = new TextRange(document.ContentStart, document.ContentEnd).Text;

            input = Regex.Replace(input, @"[ \r\n\t]", ""); //Избавляемся от пробелов, переносов.
            input = input.ToLower();                        //Переводим в нижний регистр

            //Патерн для разбиения строки на блоки.
            String pattern = @"\{([^\{\}]+)\}";     //где, \{	Совпадение с открывающей скобкой.

            // ([^\{\}]+)  Совпадение с любым символом, который не является открывающей или закрывающей круглой скобкой один или несколько раз.
            // \}   Совпадение с закрывающей скобкой

            //1. Извлечение блоков из строки на основе шаблона
            foreach (Match match in Regex.Matches(input, pattern))
            {
                blocks.Add(match.Groups[1].Value);
            }
            //Количество элементов больше 0?
            if (blocks.Count == 0)
            {
                ClearAnswer();
                return;//Пусто. Выход
            }


            //2. Извлечение данных из блоков
            foreach (var item in blocks)
            {
                string type = "";
                //2.1. Существует ли параметр типа фигуры в строке
                if (item.IndexOf("type") == -1) //не существует
                {
                    //Удаляем элемент из списка.
                    blocks.Remove(item);
                    continue;
                }

                //2.2. Разбиение блока на массив строк с параметрами.
                string[] parameters = item.Split(';', StringSplitOptions.RemoveEmptyEntries);

                //2.3. Определение типа фигуры
                foreach (var array_element in parameters)
                {
                    //Ищем параметр type
                    if (array_element.IndexOf("type") == -1) //не тот параметр
                    {
                        continue;                            //Далее
                    }
                    else//Нашли
                    {
                        type = GetType(array_element); //Проверяем, определен ли данный тип фигуры
                        break;
                    }
                }

                if (type == "")//Тип фигуры не определен
                {
                    //Удаляем элемент из списка.
                    blocks.Remove(item);
                    continue;
                }

                //3. Получаем остальные параметры. Для каждого типа фигуры свой набор параметров.
                switch (type)
                {
                case FIGURE_CIRCLE:
                    СircleClass circle = new СircleClass();
                    circle.ParceParameters(parameters);                            //Разбор параметров и рассчет значений площади и периметра.
                    Shapes.Add(circle);                                            //Добавляем элемент в список фигур
                    DeltaShapes_AddTypeIfDoesnotExist(FIGURE_CIRCLE, deltaShapes); //Добавить тип фигуры в список используемых фигур.
                    break;

                case FIGURE_RECTANGLE:
                    RectangleClass rectangle = new RectangleClass();
                    rectangle.ParceParameters(parameters);
                    Shapes.Add(rectangle);
                    DeltaShapes_AddTypeIfDoesnotExist(FIGURE_RECTANGLE, deltaShapes);
                    break;

                case FIGURE_SQUARE:
                    SquareClass square = new SquareClass();
                    square.ParceParameters(parameters);
                    Shapes.Add(square);
                    DeltaShapes_AddTypeIfDoesnotExist(FIGURE_SQUARE, deltaShapes);
                    break;

                case FIGURE_TRAPEZOID:
                    TrapezoidClass trapezoid = new TrapezoidClass();
                    trapezoid.ParceParameters(parameters);
                    Shapes.Add(trapezoid);
                    DeltaShapes_AddTypeIfDoesnotExist(FIGURE_TRAPEZOID, deltaShapes);
                    break;

                case FIGURE_TRIANGLE:
                    TriangleClass triangle = new TriangleClass();
                    triangle.ParceParameters(parameters);
                    Shapes.Add(triangle);
                    DeltaShapes_AddTypeIfDoesnotExist(FIGURE_TRIANGLE, deltaShapes);
                    break;
                }
            }

            //По заданию, неоходимо найти:
            //1. Средний периметр и площадь всех фигур
            //2. Фигура наибольшей площади
            //3. Тип фигуры с наибольшим значением среднего периметра среди всех других типов фигур.

            double deltaPerimeter = 0;                    //Средний периметр
            double deltaArea      = 0;                    //Средняя площадь

            double maxArea           = 0;                 //Значение площади
            string maxAreaTypeFigure = "Пусто";           //Тип фигуры

            double maxDeltaPerimeter           = 0;       //Наибольший средний периметр
            string maxDeltaPerimeterTypeFigure = "Пусто"; //Тип фигуры с наибольшим средним периметром

            //Находим.
            foreach (var figure in Shapes)
            {
                //Получаем значения периметра и площади для каждой фигуры
                deltaPerimeter += figure.PerimeterGet();
                deltaArea      += figure.AreaGet();

                //Ищем фигуру наибольшей площади
                if (maxArea < figure.AreaGet())
                {
                    maxArea           = figure.AreaGet();
                    maxAreaTypeFigure = figure.TypeGet();
                }
                //Увеличить среднее значение площади и периметра для конкретного типа фигур
                DeltaShapes_AddTypeItem(figure.TypeGet(), figure.PerimeterGet(), figure.AreaGet(), deltaShapes);
            }
            //Расчет среднего значения периметра и площади всех фигур
            deltaPerimeter /= Shapes.Count;
            deltaArea      /= Shapes.Count;
            //Расчет среднего значения периметра и площади для каждого типа фигур
            DeltaShapes_CalculateDelta(deltaShapes);
            //Ищем тип фигуры с наибольшим значением среднего периметра среди всех других типов фигур
            foreach (var item in deltaShapes)
            {
                if (maxDeltaPerimeter < item.Perimeter)
                {
                    maxDeltaPerimeter           = item.Perimeter;
                    maxDeltaPerimeterTypeFigure = item.Type;
                }
            }

            //Отображаем ответ
            deltaPerimeterTextBlock.Text              = String.Format("Cредний периметр: {0:f2}(м)", deltaPerimeter);
            deltaAreaTextBlock.Text                   = String.Format("Cредняя площадь: {0:f2} (кв.м)", deltaArea);
            maxAreaTypeFigureTextBlock.Text           = String.Format("Фигура наибольшей площади: {0} ({1:f2}кв.м)", maxAreaTypeFigure, maxArea);
            maxDeltaPerimeterTypeFigureTextBlock.Text = String.Format("Тип фигуры с наибольшим средним периметром: {0} ({1:f2}м)", maxDeltaPerimeterTypeFigure, maxDeltaPerimeter);
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            //Declare Triangle class objects for testing
            TriangleClass myTri = new TriangleClass();

            Console.WriteLine(myTri);
            //Test Perimeter Method
            Console.WriteLine(myTri.Perimeter().ToString());


            //Test Area Method
            Console.WriteLine(myTri.Area().ToString());

            //Test IsTriangle
            if (myTri.isTriangle())
            {
                Console.WriteLine("IT IS a triangle");
            }
            else
            {
                Console.WriteLine("NOT a triangle");
            }

            // Test isRight
            if (myTri.isRight())
            {
                Console.WriteLine("IT IS a right triangle");
            }
            else
            {
                Console.WriteLine("NOT a right triangle");
            }

            //Test GetSides / SetSides
            TriangleClass yourTri = new TriangleClass(10, 20, 30);

            Console.WriteLine(yourTri.ToString());
            float side1, side2, side3;

            myTri.GetSides(out side1, out side2, out side3);
            yourTri.SetSides(side1, side2, side3);
            Console.WriteLine(yourTri.ToString());


            // ourTri is assigned yourTri.. You may think two objects are created, but outTri is a just an alias
            //for yourTri.. They reference the same object...
            TriangleClass ourTri = new TriangleClass(50, 100, 150);

            Console.WriteLine(ourTri.ToString());
            ourTri = yourTri;
            Console.WriteLine(ourTri.ToString());

            TriangleClass addTri = new TriangleClass(50, 50, 50);

            Console.WriteLine(addTri.ToString());

            // Test operator +
            addTri = addTri + ourTri;

            Console.WriteLine(addTri.ToString());
            //Therefore after I zero yourTri.. ourTri is also zeroed .. If they were two different objects
            //OurTri would not have been zeroed.
            Console.ReadLine(); // acts like system("pause");
        }