Вот пример кода на C# для приложения, включающего три указанных модуля: Главный модуль (Program.cs): using System; using System.IO; using System.Collections.Generic; class Program { static void Main() { List points = ReadPointsFromFile("points.txt"); Console.WriteLine("Считанные точки:"); foreach (var point in points) { Console.WriteLine($"({point.X}, {point.Y})"); } double maxArea = TriangleModule.FindTriangleWithMaxArea(points); Console.WriteLine($"\nМаксимальная площадь треугольника: {maxArea}"); Console.ReadLine(); } static List ReadPointsFromFile(string filePath) { List points = new List(); try { using (StreamReader reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { string[] coordinates = reader.ReadLine().Split(' '); double x = Convert.ToDouble(coordinates[0]); double y = Convert.ToDouble(coordinates[1]); points.Add(new Point(x, y)); } } } catch (Exception ex) { Console.WriteLine($"Ошибка при чтении файла: {ex.Message}"); } return points; } } public class Point { public double X { get; set; } public double Y { get; set; } public Point(double x, double y) { X = x; Y = y; } } Модуль расчета расстояния (DistanceModule.cs): using System; public static class DistanceModule { public static double CalculateDistance(Point point1, Point point2) { double deltaX = point2.X - point1.X; double deltaY = point2.Y - point1.Y; return Math.Sqrt(Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2)); } } Модуль определения треугольника с максимальной площадью (TriangleModule.cs): using System; using System.Collections.Generic; public static class TriangleModule { public static double FindTriangleWithMaxArea(List points) { double maxArea = 0; for (int i = 0; i < points.Count - 2; i++) { for (int j = i + 1; j < points.Count - 1; j++) { for (int k = j + 1; k < points.Count; k++) { double area = CalculateTriangleArea(points[i], points[j], points[k]); maxArea = Math.Max(maxArea, area); } } } return maxArea; } private static double CalculateTriangleArea(Point point1, Point point2, Point point3) { double sideA = DistanceModule.CalculateDistance(point1, point2); double sideB = DistanceModule.CalculateDistance(point2, point3); double sideC = DistanceModule.CalculateDistance(point3, point1); double semiPerimeter = (sideA + sideB + sideC) / 2; return Math.Sqrt(semiPerimeter * (semiPerimeter - sideA) * (semiPerimeter - sideB) * (semiPerimeter - sideC)); } } Таблица интеграционного тестирования: | Тест | Вводные данные (points.txt) | Ожидаемый результат | |------|-------------------------------|----------------------| | 1 | 0 0
1 0
0 1 | Максимальная площадь треугольника: 0.5 | | 2 | 1 1
2 2
3 3 | Максимальная площадь треугольника: 0 (треугольник вырожден в линию) | | 3 | -1 -1
1 1
-2 3 | Максимальная площадь треугольника: 3 | | 4 | Пустой файл | Максимальная площадь треугольника: 0 (нет треугольников) | | 5 | 0 0
1 1
2 2 | Максимальная площадь треугольника: 0 (все точки на одной прямой) | Примечание: - Тесты представляют различные сценарии ввода точек и ожидаемые результаты для модуля определения треугольника с максимальной площадью.