Написать программу для работы с геометрическими фигурами - C#

Узнай цену своей работы

Формулировка задачи:

Доброго всем дня! дали задачу, от решения которой зависит, будут ли меня далее учить чему-то. Сидела неделю, читая разные темы и коды и поняла, что в голове уже полный кавардак, не понимаю с чего начать и как выстроить весь алгоритм программы. Направьте пожалуйста в нужное русло Критерии: 1) Пользовательское меню. ( Console, AWT, Swing, Spring на выбор) 2) Пользователь должен иметь возможность добавить новую фигуру через координаты точек. ( а)вводится количество точек и их координаты б) тип фигуры и координаты) 3) Удаление фигуры по id. 4) Вывод id всех фигур, их координат и тип фигуры. 5) Вывод площади, периметра любой фигуры. 6) Проверка факта пересечения 2-х фигур. 7) Считывание данных из файла. 8) *Выгрузка данных в файл. (не обязательно). p.s. в моем случае сказали можно ограничиться 3-4 угольниками. страдая и штудируя и этот сайт в частности уже потерялась в вариантах своего кода, это последний, просто рассчитывающий площадь и периметр треугольника и прямоугольника....
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApp1
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //Console.WriteLine("Введите координаты первой точки");
  13. // Console.Write("x: ");
  14. //Console.ReadKey();
  15. Triangle tr1 = new Triangle(new Point(1, 1), new Point(2, 2), new Point(3, 4));
  16. // if (AB >= BC + AC || AC >= BC + AB || BC >= AB + AC)
  17. // {
  18. // throw new ArgumentException("Недопустимый размер треугольника. Точки лежат на одной прямой или длина ребра равна нулю");
  19. //}
  20. Rectangle rect1 = new Rectangle(new Point(5, 4), new Point(5, 18), new Point(45, 18), new Point(45, 4));
  21. IFigure ifig;
  22. ifig = tr1;
  23. double P_tr = ifig.P();
  24. double S_tr = ifig.S();
  25. foreach (var pt in ifig.Coordinates)
  26. Console.WriteLine("X={0}, Y={1}", pt.X, pt.Y);
  27. ifig = rect1;
  28. double P_rect = ifig.P();
  29. double S_rect = ifig.S();
  30. foreach (var pt in ifig.Coordinates)
  31. Console.WriteLine("X={0}, Y={1}", pt.X, pt.Y);
  32. Console.WriteLine("Периметр треугольника = {0}.\nПлощадь треугольника = {1}", P_tr, S_tr);
  33. Console.WriteLine("Периметр прямоугольника = {0}.\nПлощадь прямоугольника = {1}", P_rect, S_rect);
  34. Console.Read();
  35. }
  36. }
  37. class Point
  38. {
  39. public int X
  40. {
  41. get;
  42. set;
  43. }
  44. public int Y
  45. {
  46. get;
  47. set;
  48. }
  49. public Point(int x, int y)
  50. {
  51. X = x;
  52. Y = y;
  53. }
  54. }
  55.  
  56. class Triangle : Point, IFigure
  57. {
  58. Point p1;
  59. Point p2;
  60. Point p3;
  61. Point[] points;
  62. public Triangle(Point pt1, Point pt2, Point pt3)
  63. : base(pt1.X, pt1.Y)
  64. {
  65. p1 = pt1;
  66. p2 = pt2;
  67. p3 = pt3;
  68. points = new Point[3];
  69. points[0] = p1;
  70. points[1] = p2;
  71. points[2] = p3;
  72. }
  73. //длина первой стороны
  74. public double AB
  75. {
  76. get
  77. {
  78. return Math.Sqrt(Math.Pow(points[0].X - points[1].X, 2) + Math.Pow(points[0].Y - points[1].Y, 2));
  79. }
  80. }
  81. //длина второй стороны
  82. public double BC
  83. {
  84. get { return Math.Sqrt(Math.Pow(points[1].X - points[2].X, 2) + Math.Pow(points[1].Y - points[2].Y, 2)); }
  85. }
  86. //длина третьей стороны
  87. public double AC
  88. {
  89. get { return Math.Sqrt(Math.Pow(points[0].X - points[2].X, 2) + Math.Pow(points[0].Y - points[2].Y, 2)); }
  90. }
  91. public double P()
  92. {
  93. //расчет периметра
  94. return AB + BC + AC;
  95. }
  96. //расчет полупериметра
  97. public double HP
  98. {
  99. get { return (AB + BC + AC) * 0.5; }
  100. }
  101. public double S()
  102. {
  103. //расчет площади
  104. return (Math.Sqrt(HP * (HP - AB) * (HP - BC) * (HP - AC)));
  105. }
  106.  
  107. public Point[] Coordinates
  108. {
  109. get
  110. {
  111. return points;
  112. }
  113. set
  114. {
  115. points = value;
  116. }
  117. }
  118. }
  119. class Rectangle : Point, IFigure
  120. {
  121. Point p1;
  122. Point p2;
  123. Point p3;
  124. Point p4;
  125. Point[] points;
  126. public Rectangle(Point pt1, Point pt2, Point pt3, Point pt4)
  127. : base(pt1.X, pt1.Y)
  128. {
  129. p1 = pt1;
  130. p2 = pt2;
  131. p3 = pt3;
  132. p4 = pt4;
  133. points = new Point[4];
  134. points[0] = p1;
  135. points[1] = p2;
  136. points[2] = p3;
  137. points[3] = p4;
  138. }
  139.  
  140. //длина первой стороны
  141. public double side1
  142. {
  143. get
  144. {
  145. return Math.Sqrt(M
  146. ath.Pow(points[0].X - points[1].X, 2) + Math.Pow(points[0].Y - points[1].Y, 2));
  147. }
  148. }
  149. //длина второй стороны
  150. public double side2
  151. {
  152. get { return Math.Sqrt(Math.Pow(points[1].X - points[2].X, 2) + Math.Pow(points[1].Y - points[2].Y, 2)); }
  153. }
  154. //длина третьей стороны
  155. public double side3
  156. {
  157. get { return Math.Sqrt(Math.Pow(points[0].X - points[2].X, 2) + Math.Pow(points[0].Y - points[2].Y, 2)); }
  158. }
  159. public double P()
  160. {
  161. //периметр
  162. if (side1 == side2) { return side1 * 2 + side3 * 2; }
  163. else { return side1 * 2 + side2 * 2; }
  164. }
  165. public double S()
  166. {
  167. //площадь
  168. if (side1 == side2) { return side1 * side3; }
  169. else { return side1 * side2; }
  170. }
  171. public Point[] Coordinates
  172. {
  173. get
  174. {
  175. return points;
  176. }
  177. set
  178. {
  179. points = value;
  180. }
  181. }
  182. }
  183. interface IFigure
  184. {
  185. double P();
  186. double S();
  187. Point[] Coordinates { get; set; }
  188. }
  189. }

Решение задачи: «Написать программу для работы с геометрическими фигурами»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace ConsoleApp1
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             int param = 0;// Выбор параметра в меню
  11.             int colvoPoint = 0;  // Количество точек
  12.             int x = 0; // Координата x              
  13.             int y = 0; // Координата y
  14.             int indexDel = 0; // Индекс удаляемой фигуры          
  15.             List<List<List<int>>> figure = new List<List<List<int>>>();//Фигуры + точки + координаты точек
  16.             //----------------------------------------------------------------------------------//
  17.             //----------------------------------------------------------------------------------//
  18.             //----------------------------------------------------------------------------------//
  19.             while (true)
  20.             {
  21.                 Console.WriteLine("--Меню--");
  22.                 Console.WriteLine("1 - Добавить фигуру");
  23.                 Console.WriteLine("2 - Удалить фигуру");
  24.                 Console.WriteLine("3 - Вывод данных фигур");
  25.                 Console.WriteLine("4 - Выход");
  26.                 param = Convert.ToInt32(Console.ReadLine());
  27.  
  28.                 switch (param)
  29.                 {
  30.                     case 1: // Добавление новой фигуры
  31.                         figure.Add(new List<List<int>>());
  32.                         Console.WriteLine();
  33.                         Console.WriteLine("Введите количество точек фигуры:");
  34.                         colvoPoint = Convert.ToInt32(Console.ReadLine());
  35.                         Console.WriteLine();
  36.                         Console.WriteLine("Введите координаты точек");
  37.  
  38.                         for (int i = 0; i < colvoPoint; i++)
  39.                         {
  40.                             figure[figure.Count - 1].Add(new List<int>());
  41.                             Console.WriteLine(i + 1 + "я точка");
  42.                             Console.Write("X: ");
  43.                             x = Convert.ToInt32(Console.ReadLine());
  44.                             figure[figure.Count - 1][i].Add(x);//x
  45.  
  46.                             Console.Write("Y: ");
  47.                             y = Convert.ToInt32(Console.ReadLine());
  48.                             figure[figure.Count - 1][i].Add(y);//y
  49.                         }
  50.                         Console.WriteLine(); break;
  51.  
  52.                     case 2: // Удаление фигуры по номеру добавления
  53.                         Console.Write("Введите индекс фигуры ");
  54.                         indexDel = Convert.ToInt32(Console.ReadLine());
  55.                         figure.RemoveAt(indexDel);
  56.  
  57.                         Console.WriteLine(); break;
  58.  
  59.                     case 3: //Вывод данных фигур
  60.                         for (int i = 0; i < figure.Count; i++)
  61.                         {
  62.                             Console.WriteLine("ID - " + (figure.Count - 1));
  63.                             Console.WriteLine("Point - " + figure[i].Count);
  64.                             for (int j = 0; j < figure[i].Count; j++)
  65.                             {
  66.                                 for (int k = 0; k < 2; k++)
  67.                                     Console.WriteLine(k + 1 + "я координата - " + figure[i][j][k]);
  68.                             }
  69.                         }
  70.                         Console.WriteLine(); break;
  71.  
  72.                     case 4: Environment.Exit(0); break;
  73.                 }
  74.             }
  75.         }
  76.     }
  77. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы