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(); }
public void Analyze6() { sides = new List <int> { 4, 6, 8 }; StringAssert.AreEqualIgnoringCase(expectedScalene, TriangleClass.Analyze(ref sides)); }
public void Analyze4() { sides = new List <int> { 2, 3, 3 }; StringAssert.AreEqualIgnoringCase(expectedIsosceles, TriangleClass.Analyze(ref sides)); }
public void Analyze3() { sides = new List <int> { 5, 5, 5 }; StringAssert.AreEqualIgnoringCase(expectedEquilateral, TriangleClass.Analyze(ref sides)); }
public void Analyze1() { sides = new List <int> { 1, 2, 3 }; StringAssert.AreEqualIgnoringCase(expectedNoTriangle, TriangleClass.Analyze(ref sides)); }
public static void Main(string[] args) { WorkWithConsoleClass workWithConsoleClass = new WorkWithConsoleClass(); TriangleClass triangle = new TriangleClass(workWithConsoleClass.Input()); workWithConsoleClass.Output(triangle.GetArea(), triangle.GetPerimeter()); }
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); }
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); }
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); }
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); }
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); }
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"); }