Сортировка по параметрам и поиск по значению в массиве - C#

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

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

1) сортировка: отсортировать фигуры по типам сначала квадраты потом треугольники, круги 2) поиск: определить есть ли фигура с площадью > 10 Код:
Листинг программы
  1. using System;
  2. using System.Linq;
  3. class TwoDShape
  4. {
  5. double pri_size;
  6. public TwoDShape()
  7. {
  8. Size = 0.0;
  9. name = "null";
  10. }
  11. public TwoDShape(double x, string n)
  12. {
  13. Size = x;
  14. name = n;
  15. }
  16.  
  17. public TwoDShape(TwoDShape ob)
  18. {
  19. Size = ob.Size;
  20. name = ob.name;
  21. }
  22.  
  23. public double Size
  24. {
  25. get { return pri_size; }
  26. set { pri_size = value < 0 ? -value : value; }
  27. }
  28. public string name { get; set; }
  29. public virtual double Area()
  30. {
  31. Console.WriteLine("Метод Area() должен быть переопределен");
  32. return 0.0;
  33. }
  34. }
  35. class Triangle : TwoDShape
  36. {
  37. string Style;
  38. public Triangle()
  39. {
  40. Style = "null";
  41. }
  42. public Triangle(string s, double x) :
  43. base(x, "Треугольник")
  44. {
  45. Style = s;
  46. }
  47. public Triangle(double x) : base(x, "Треугольник")
  48. {
  49. Style = "Равносторонний";
  50. }
  51. public override double Area()
  52. {
  53. return (Math.Sqrt(3) / 4) * (Size * Size);
  54. }
  55. public void ShowStyle()
  56. {
  57. Console.WriteLine("Треугольник " + Style);
  58. }
  59. }
  60.  
  61. class Rectangle : TwoDShape
  62. {
  63. public Rectangle(double x) :
  64. base(x, "Квадрат")
  65. { }
  66.  
  67. public Rectangle(Rectangle ob) : base(ob) { }
  68.  
  69. public override double Area()
  70. {
  71. return Size * Size;
  72. }
  73. }
  74. class Circle : TwoDShape
  75. {
  76. public Circle(double x) :
  77. base(x, "Круг")
  78. { }
  79.  
  80. public Circle(Circle ob) : base(ob) { }
  81.  
  82. public override double Area()
  83. {
  84. return Math.PI * (Size * Size);
  85. }
  86. }
  87.  
  88. class DynShapes
  89. {
  90. static void Main()
  91. {
  92. TwoDShape[] shapes = new TwoDShape[10];
  93. shapes[0] = new Triangle(2.0);
  94. shapes[1] = new Rectangle(10.0);
  95. shapes[2] = new Circle(3.0);
  96. shapes[3] = new Rectangle(4.0);
  97. shapes[4] = new Triangle(7.0);
  98. shapes[5] = new Circle(5.0);
  99. shapes[6] = new Rectangle(6.0);
  100. shapes[7] = new Triangle(1.0);
  101. shapes[8] = new Circle(8.0);
  102. shapes[9] = new Circle(10.0);
  103. Console.WriteLine("\tПлощадь\t\0|Параметр|Обьект\n"); //вывод общий
  104. Console.WriteLine(new string('=', 50));
  105. for (int i = 0; i < 10; i++)
  106. {
  107. Console.WriteLine("{0,17}|{1,8}|{2,0}", shapes[i].Area(), shapes[i].Size, shapes[i].name);
  108. Console.WriteLine();
  109. }
  110. Array.Sort(shapes, new Comparison<TwoDShape>(CompareShapes));
  111. Console.WriteLine("параметры по возрастанию.\n\tПлощадь\t\0|Параметр|Обьект\n "); //вывод сортированных параметров
  112. Console.WriteLine(new string('=', 50));
  113. for (int i = 0; i < 10; i++)
  114. {
  115. Console.WriteLine("{0,17}|{1,8}|{2,0}", shapes[i].Area(), shapes[i].Size, shapes[i].name);
  116. Console.WriteLine();
  117. }
  118. Array.Sort(shapes, new Comparison<TwoDShape>(CompareArea)); //вывод сортированной площади (убыв)
  119. Console.WriteLine("убывание площади\n\tПлощадь\t\0|Параметр|Обьект\n ");
  120. Console.WriteLine(new string('=', 50));
  121. for (int i = 0; i < 10; i++)
  122. {
  123. Console.WriteLine("{0,17}|{1,8}|{2,0}", shapes[i].Area(), shapes[i].Size, shapes[i].name);
  124. Console.WriteLine();
  125. }
  126. }
  127. private static int CompareShapes(TwoDShape x, TwoDShape y) //сортированных параметров
  128. {
  129. return x.Size.CompareTo(y.Size);
  130. }
  131. private static int CompareArea(TwoDShape z, TwoDShape w) //сортированной площади (убыв)
  132. {
  133. return w.Area().CompareTo(z.Area());
  134. }
  135. }
спасибо покорно за помощь с поиском разобрался, помогите с сортировкой , действительно не понимаю

Решение задачи: «Сортировка по параметрам и поиск по значению в массиве»

textual
Листинг программы
  1. private static int TypesComparison(TwoDShape x, TwoDShape y)
  2.         {
  3.             var xCircle = x as Circle;
  4.             var xTriangle = x as Triangle;
  5.             var xRectangle = x as Rectangle;
  6.  
  7.             var yCircle = y as Circle;
  8.             var yTriangle = y as Triangle;
  9.             var yRectangle = y as Rectangle;
  10.  
  11.  
  12.             if (xCircle != null)
  13.             {
  14.                 if (yCircle != null)
  15.                     return 0;
  16.                 return -1;
  17.             }
  18.  
  19.             if (xTriangle != null)
  20.             {
  21.                 if (yTriangle != null)
  22.                     return 0;
  23.                 if (yRectangle != null)
  24.                     return -1;
  25.                 return 1;
  26.             }
  27.  
  28.             if (xRectangle != null)
  29.             {
  30.                 if (yRectangle != null)
  31.                     return 0;
  32.                 return 1;
  33.             }
  34.             throw new Exception();
  35.         }

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


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

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

6   голосов , оценка 4.167 из 5

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

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

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