static void Main(string[] args) { Point3D p1 = new Point3D(1, 2, 3); Point3D p2 = new Point3D(4, 5, 6); Path points = new Path(); points.AddPoint(p1); points.AddPoint(p2); Console.WriteLine(points); Console.WriteLine("Distance:"); Console.WriteLine("{0:F2}", Distance.CalculateDistance(p1, p2)); PathStorage.Save(points, "Path.txt"); }
static void TestingPointsFromTask1ToTask4() { Console.WriteLine("------------------- Testing Points From Task 1 To Task 4 -------------------"); //********** TASK 1 ********** Console.WriteLine("********** TASK 1 **********"); //Create a structure Point3D to hold a 3D-coordinate {X, Y, Z} in the Euclidian 3D space. Point3D point = new Point3D(2, 5, 6); //Implement the ToString() to enable printing a 3D point. Console.WriteLine("This is Point3D.ToString(): {0}", point.ToString()); //********** TASK 2 ********** Console.WriteLine("********** TASK 2 **********"); //Add a private static read-only field to hold the start of the coordinate system – the point O{0, 0, 0}. //Add a static property to return the point O. Console.WriteLine("Start of the coordinate system: {0}", Point3D.ZeroPoint); //********** TASK 3 ********** Console.WriteLine("********** TASK 3 **********"); //Write a static class with a static method to calculate the distance between two points in the 3D space. Console.WriteLine("Distance between 2 points: {0}", Distance.CalculateDistance(point, Point3D.ZeroPoint)); //********** TASK 4 ********** Console.WriteLine("********** TASK 4 **********"); //Create a class Path to hold a sequence of points in the 3D space. Path path = new Path(); path.AddPoint(new Point3D(1, 2, 3)); path.AddPoint(new Point3D(6, 8, 6)); path.AddPoint(new Point3D(2, 5, 7)); path.AddPoint(new Point3D(1, 2, 0)); //Create a static class PathStorage with static methods to save and load paths from a text file. //Saving path to a file Console.WriteLine("Saving path to a file"); PathStorage.SavePath(path, "file"); //Loading paths from a file Path loadedPath = PathStorage.LoadPath("file"); Console.WriteLine("Loading paths from a file"); foreach (var item in loadedPath.Points) { Console.WriteLine(item); } }
static void Main() { Point3D firstPoint = new Point3D(6, 5, 4); Console.WriteLine("First point: {0}", firstPoint); Console.WriteLine("Second Point: {0}", Point3D.O); Console.WriteLine("Distance between 2 points: {0:F2}", DistanceBetween2Points.CalculateDistance(firstPoint, Point3D.O)); PathStorage.SavePath(); // Saving random sequence of some points in text file. Console.WriteLine(new string('=', 42) + "\r\nLoaded sequnce of points from a saved file\r\n" + new string('=', 42)); PathStorage.LoadPath(); // Loading the sequence from the saved file and printing it on the console. Console.WriteLine(new string('=', 48) + "\r\nTesting GenericList's Add function and Auto-Grow\r\n" + new string('=', 48)); GenericList <Point3D> pointsInList = new GenericList <Point3D>(); for (int i = 0; i < 10; i++) { pointsInList.Add(new Point3D(rnd.Next(0, 100), rnd.Next(0, 100), rnd.Next(0, 100))); Console.WriteLine("[Index: {0}] {1}", i, pointsInList[i]); } Console.WriteLine(new string('=', 37) + "\r\nTesting GenericList's Access function\r\n" + new string('=', 37)); Point3D accessPoint = pointsInList.AccessElement(5); Console.WriteLine(accessPoint); Console.WriteLine(new string('=', 37) + "\r\nTesting GenericList's Remove function\r\n" + new string('=', 37)); pointsInList.Remove(5); for (int i = 0; i < pointsInList.Count; i++) { Console.WriteLine("[Index: {0}] {1}", i, pointsInList[i]); } Console.WriteLine(new string('=', 39) + "\r\nTesting GenericList's InsertAt function\r\n" + new string('=', 39)); pointsInList.InsertAt(new Point3D(32, 17, 98), 5); for (int i = 0; i < pointsInList.Count; i++) { Console.WriteLine("[Index: {0}] {1}", i, pointsInList[i]); } Console.WriteLine(new string('=', 49) + "\r\nTesting GenericList's FindIndexOfElement function\r\n" + new string('=', 49)); var indexOf = pointsInList.FindIndexOfElement(new Point3D(32, 17, 98)); Console.WriteLine("The index of {0} is: {1}", new Point3D(32, 17, 98), indexOf); Console.WriteLine(new string('=', 39) + "\r\nTesting GenericList's ToString function\r\n" + new string('=', 39)); Console.WriteLine(pointsInList.ToString()); Console.WriteLine(new string('=', 37) + "\r\nTesting Min<T>() and Max<T>() methods\r\n" + new string('=', 37)); double distance1 = DistanceBetween2Points.CalculateDistance(pointsInList[0], pointsInList[1]); double distance2 = DistanceBetween2Points.CalculateDistance(pointsInList[2], pointsInList[3]); double min = Min <double>(distance1, distance2); double max = Max <double>(distance1, distance2); Console.WriteLine("Min distance: {0:F2}", min); Console.WriteLine("Max distance: {0:F2}", max); Console.WriteLine(new string('=', 20) + "\r\nTesting Mtarix class\r\n" + new string('=', 20)); Matrix <int> firstMatrix = new Matrix <int>(3, 3); Matrix <int> secondMatrix = new Matrix <int>(3, 3); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { firstMatrix[i, j] = (i + 3) + (j + 1) + 2; secondMatrix[i, j] = (i + 1) + (j + 2); } } Console.WriteLine("First Matrix:\r\n{0}", firstMatrix); Console.WriteLine("Second Matrix:\r\n{0}", secondMatrix); Console.WriteLine(new string('=', 8) + "\r\nAddition\r\n" + new string('=', 8)); Console.WriteLine("First Matrix + Second Matrix =\n{0}", firstMatrix + secondMatrix); Console.WriteLine(new string('=', 12) + "\r\nSubstraction\r\n" + new string('=', 12)); Console.WriteLine("First Matrix - Second Matrix =\n{0}", firstMatrix - secondMatrix); Console.WriteLine(new string('=', 14) + "\r\nMultiplycation\r\n" + new string('=', 14)); Console.WriteLine("First Matrix * Second Matrix =\n{0}", firstMatrix * secondMatrix); Console.WriteLine(new string('=', 13) + "\r\nTrue operator\r\n" + new string('=', 13)); Matrix <int> anotherMatrix = new Matrix <int>(3, 3); Console.WriteLine("This matrix: "); if (anotherMatrix) { Console.WriteLine("{0}\r\ndoesn't containt zero elements", anotherMatrix); } else { Console.WriteLine("{0}\r\ncontaints zero elements", anotherMatrix); } object[] attributes = typeof(DefinigClassesMain).GetCustomAttributes(false); Console.WriteLine(); Console.WriteLine("Version: {0}", attributes[0]); }
static void Main() { // Test Path Path points = new Path(); points.AddPoint(new Point3D(1, 2, 3)); points.AddPoint(new Point3D(5, 2, 3)); points.AddPoint(new Point3D(6, 3, 3)); // Test PathStorage PathStorage.SavePath(points); PathStorage.LoadPath(); // Test distance Console.WriteLine("Distance: {0}", Distance.CalculateDistance(new Point3D(1, 2, 3), new Point3D(5, 2, 3))); // Test Matrix operators Matrix <int> matrix1 = new Matrix <int>(3, 2); matrix1[0, 0] = 1; matrix1[0, 1] = 3; matrix1[1, 0] = 1; matrix1[1, 1] = 0; matrix1[2, 0] = 1; matrix1[2, 1] = 2; Matrix <int> matrix2 = new Matrix <int>(3, 2); matrix2[0, 0] = 0; matrix2[0, 1] = 0; matrix2[1, 0] = 7; matrix2[1, 1] = 5; matrix2[2, 0] = 2; matrix2[2, 1] = 1; // Test + Console.WriteLine("The sum is"); Console.WriteLine(matrix1 + matrix2); // Test - Console.WriteLine("The subtraction is"); Console.WriteLine(matrix1 - matrix2); // Test * Matrix <int> matrix3 = new Matrix <int>(2, 3); matrix3[0, 0] = 1; matrix3[0, 1] = 2; matrix3[0, 2] = 3; matrix3[1, 0] = 4; matrix3[1, 1] = 5; matrix3[1, 2] = 6; Matrix <int> matrix4 = new Matrix <int>(3, 2); matrix4[0, 0] = 7; matrix4[0, 1] = 8; matrix4[1, 0] = 9; matrix4[1, 1] = 10; matrix4[2, 0] = 11; matrix4[2, 1] = 12; Console.WriteLine("The multiplication is"); Console.WriteLine(matrix3 * matrix4); // Test True if (matrix1) { Console.WriteLine("The matrix has not zero element!"); } else { Console.WriteLine("The matrix has zero element!"); } if (matrix4) { Console.WriteLine("The matrix has not zero element!"); } else { Console.WriteLine("The matrix has zero element!"); } // Test Version attribute Console.WriteLine(); VersionClass.TestVersion(); }
static void Main() { //Problem 1 test Console.WriteLine("Point:"); Point3D point = new Point3D(2.5, 3, 4); Console.WriteLine(point.ToString()); //Problem 2 test Console.WriteLine("\nPoint O:"); Console.WriteLine(Point3D.getPointO.ToString()); //Problem 3 test Console.WriteLine("\nDistance between two points:"); Console.WriteLine(Distance.CalculateDistance(Point3D.getPointO, point)); //Problem 4 test Console.WriteLine("\nPath:"); Path.PointsPath.Add(new Point3D(7, 3, 1)); Path.PointsPath.Add(new Point3D(3, 1, 9)); Path.PointsPath.Add(new Point3D(5, 5, 9)); PathStorage.SavePath(); Console.WriteLine(PathStorage.LoadPaths()); //Problems 5, 6 test var numbers = new GenericList <int>(4); numbers.Add(5); //Test Add method numbers.Add(45); numbers.Add(34); numbers.Add(3); numbers.Add(423); numbers.Add(3247); Console.WriteLine(numbers); var people = new GenericList <string>(2); //Test GenericList with strings people.Add("Ivan"); people.Add("Petar"); people.Add("Dimitar"); people.Add("Georgi"); Console.WriteLine(people); Console.WriteLine(); numbers.RemoveAtGivenPosition(3); //Test RemoveAtGivenPosition method numbers.RemoveAtGivenPosition(1); Console.WriteLine(numbers); people.RemoveAtGivenPosition(0); Console.WriteLine(people); Console.WriteLine(); numbers[0] = 555; //Test indexer Console.WriteLine(numbers); people[2] = "Mariya"; Console.WriteLine(people); Console.WriteLine(); numbers.AddAtGivenPosition(999, 0); //Test AddAtGivenPosition method numbers.AddAtGivenPosition(11, 0); Console.WriteLine(numbers); people.AddAtGivenPosition("Petya", 0); Console.WriteLine(people); Console.WriteLine(); Console.WriteLine("Index of 555: " + numbers.IndexOf(555) + ", Index of 3247: " + numbers.IndexOf(3247)); // Test IndexOf method Console.WriteLine("Index of Mariya: " + people.IndexOf("Mariya")); Console.WriteLine(); //Problem 7 test Console.WriteLine("Min element of numbers: " + numbers.Min()); //Test Min method Console.WriteLine("Max element of numbers: " + numbers.Max()); //Test Max method Console.WriteLine("Min element of names:" + people.Min()); Console.WriteLine("Max element of names:" + people.Max()); Console.WriteLine(); numbers.RemoveAll(); //Test RemoveAll method(Problem 6) Console.WriteLine(numbers); people.RemoveAll(); Console.WriteLine(people); Console.WriteLine(); //Problems 8,9 var matrix = new Matrix <double>(); matrix[2, 1] = 2.4; matrix[4, 2] = 10.3; matrix[1, 0] = 45.4; Console.WriteLine(matrix[2, 1] + ", " + matrix[4, 2] + ", " + matrix[1, 0]); var numberMatrix = new Matrix <int>(); matrix[3, 1] = 2; matrix[1, 2] = 10; matrix[2, 0] = 45; Console.WriteLine(matrix[3, 1] + ", " + matrix[1, 2] + ", " + matrix[2, 0] + "\n"); //Problem 10 var firstMatrix = new Matrix <int>(); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { firstMatrix[i, j] = i + 1; } } var secondMatrix = new Matrix <int>(); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { secondMatrix[i, j] = i + 2; } } Console.WriteLine(firstMatrix); Console.WriteLine(); Console.WriteLine(secondMatrix); Console.WriteLine(); Console.WriteLine(firstMatrix + secondMatrix); Console.WriteLine(); Console.WriteLine(secondMatrix - firstMatrix); Console.WriteLine(); Console.WriteLine(firstMatrix * secondMatrix); Console.WriteLine(); //Problem 11 VersionAttribute vs = new VersionAttribute(); vs.getVersion(); }
static void Main(string[] args) { /* * 11. Version attribute * * Create a [Version] attribute that can be applied to structures, classes, interfaces, enumerations and methods and holds a version in the format major.minor (e.g. 2.11). * Apply the version attribute to a sample class and display its version at runtime. * */ Type type = typeof(TestHomework); object[] vers = type.GetCustomAttributes(false); foreach (VersionAttribute version in vers) { Console.WriteLine("The version is [{0}.{1}]", version.Version, version.SubVersion); } /* * 1. Structure * * Create a structure Point3D to hold a 3D-coordinate {X, Y, Z} in the Euclidian 3D space. * Implement the ToString() to enable printing a 3D point. * */ Console.WriteLine(new String('-', 73)); Console.WriteLine(); Point3D point1 = new Point3D(3, 4, 5); Console.WriteLine("Point: " + point1); /* * 2. Static read-only field * * Add a private static read-only field to hold the start of the coordinate system – the point O{0, 0, 0}. * Add a static property to return the point O. * */ Console.WriteLine(new String('-', 73)); Console.WriteLine("Center O : " + Point3D.O); /* * 3. Static class * * Write a static class with a static method to calculate the distance between two points in the 3D space. * */ Console.WriteLine(new String('-', 73)); Point3D point2 = new Point3D(5, 4, 3); Console.WriteLine("Distance between two points {0} and {1} is {2:F3}", point1, point2, DistanceBetweenPoints.Distance(point1, point2)); /* * 4. Path * * Create a class Path to hold a sequence of points in the 3D space. * Create a static class PathStorage with static methods to save and load paths from a text file. * Use a file format of your choice. * */ Console.WriteLine(new String('-', 73)); List <Point3D> path = PathStorage.Load(@"..\..\fileWithPoints_test.txt"); Console.WriteLine("Path with poinst loaded from a .txt file :"); foreach (Point3D p in path) { Console.WriteLine(p); } PathStorage.Save(@"..\..\TestSavePath.txt", path); Console.WriteLine("Those points were saved to ' " + @"..\..\TestSavePath.txt" + " ' "); /* * 5. Generic class * * Write a generic class GenericList<T> that keeps a list of elements of some parametric type T. * Keep the elements of the list in an array with fixed capacity which is given as parameter in the class constructor. * Implement methods for adding element, accessing element by index, removing element by index, inserting element at given position, clearing the list, finding element by its value and ToString(). * Check all input parameters to avoid accessing elements at invalid positions. * */ Console.WriteLine(new String('-', 73)); Console.WriteLine("Creating Generic list"); GenericList <int> genericListInt = new GenericList <int>(3); genericListInt.Add(1); genericListInt.Add(2); genericListInt.Add(3); Console.WriteLine("Added to list : " + genericListInt); Console.WriteLine("Element on index [1] is : " + genericListInt[1]); genericListInt.RemoveAt(1); Console.WriteLine("Removed element on index [1], list is : " + genericListInt); genericListInt.InsertAt(1, 100); Console.Write("Inserted element '{0}' ot position {1}. ", genericListInt[1], 1); Console.WriteLine("List is: " + genericListInt); /* * 6. Auto-grow * * Implement auto-grow functionality: when the internal array is full, create a new array of double size and move all elements to it. * */ Console.WriteLine(new String('-', 73)); Console.WriteLine("Before adding elements list is {0} and has capacity: {1}", genericListInt, genericListInt.Capacity); genericListInt.Add(101); genericListInt.Add(102); genericListInt.Add(103); genericListInt.Add(104); Console.WriteLine("After adding a few elements the list is {0} \nand it's capacity is : {1}", genericListInt, genericListInt.Capacity); /* * 7. Min and Max * * Create generic methods Min<T>() and Max<T>() for finding the minimal and maximal element in the GenericList<T>. * You may need to add a generic constraints for the type T. * */ Console.WriteLine(new String('-', 73)); Console.WriteLine("Minimal element is: {0} ", genericListInt.Min()); Console.WriteLine("Maximal element is: {0} ", genericListInt.Max()); Console.WriteLine("List before clear: \n" + genericListInt); genericListInt.Clear(); Console.WriteLine("List after clear: \n" + genericListInt + " it's empty :( "); /* * 8. Matrix * * Define a class Matrix<T> to hold a matrix of numbers (e.g. integers, floats, decimals). * * 9. Matrix indexer * * Implement an indexer this[row, col] to access the inner matrix cells. * * 10. Matrix operations * * Implement the operators + and - (addition and subtraction of matrices of the same size) and * for matrix multiplication. * Throw an exception when the operation cannot be performed. * Implement the true operator (check for non-zero elements). * */ Console.WriteLine(new String('-', 73)); Matrix <int> matr1 = new Matrix <int>(3, 2); matr1[0, 0] = 1; matr1[0, 1] = 1; matr1[1, 0] = 1; matr1[1, 1] = 1; matr1[2, 0] = 1; matr1[2, 1] = 1; Console.WriteLine("Matrix1 is : \n" + matr1); Matrix <int> matr2 = new Matrix <int>(3, 2); matr2[0, 0] = 2; matr2[0, 1] = 2; matr2[1, 0] = 2; matr2[1, 1] = 2; matr2[2, 0] = 2; matr2[2, 1] = 2; Console.WriteLine("Matrix2 is : \n" + matr2); Console.WriteLine("Matrix1 + Matrix2 : \n" + (matr1 + matr2)); Console.WriteLine("Matrix1 - Matrix2 : \n" + (matr1 - matr2)); Matrix <int> multMatr = new Matrix <int>(2, 5); multMatr[0, 0] = 0; multMatr[0, 1] = 0; multMatr[0, 2] = 0; multMatr[0, 3] = 0; multMatr[0, 4] = 0; multMatr[1, 0] = 0; multMatr[1, 1] = 0; multMatr[1, 2] = 0; multMatr[1, 3] = 0; multMatr[1, 4] = 0; Console.WriteLine("Matrix 3 : \n" + multMatr); Console.WriteLine("Matrix1 * Matrix3 : "); Console.WriteLine(matr1 * multMatr); if (matr1 * multMatr) { Console.WriteLine("The matrix: \n" + (matr1 * multMatr)); Console.WriteLine("DOES NOT CONTAIN ZERO"); } else { Console.WriteLine("The matrix: \n" + (matr1 * multMatr)); Console.WriteLine("CONTAINS ZERO"); } }