Сортировка List 2d точек - C#

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

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

Есть List из 2d точек, нужно отсортировать его так, чтобы возрастали х координаты при примерно одинаковых у координатах(с точностью 0.001). Затем у координаты увеличиваются и опять нужно отсортировать х координаты. Применить Linq
Листинг программы
  1. points.OrderBy(p => p.y).ThenBy(p => p.x);
не получилось как мне кажется из за того что у координаты слегка могут отличаться. Такая функция(ниже) вроде как решает задачу. Вопрос, можно ли здесь применить Linq?
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ListSort
  6. {
  7. class Point
  8. {
  9. public double x, y;
  10. public Point(double x, double y)
  11. {
  12. this.x = x; this.y = y;
  13. }
  14. }
  15. class Program
  16. {
  17. static int ComparePoints(Point A, Point B)
  18. {
  19. int ires=0;
  20. if (A.y < B.y)
  21. ires = -1;
  22. if (A.y > B.y)
  23. ires = 1;
  24. if (A.y == B.y)
  25. {
  26. if (A.x < B.x)
  27. ires = -1;
  28. if (A.x > B.x)
  29. ires = 1;
  30. }
  31. return ires;
  32. }
  33. static void Main(string[] args)
  34. {
  35. List<Point> Points = new List<Point>();
  36. Points.Add(new Point(0, 0));
  37. Points.Add(new Point(23.6, 0));
  38. Points.Add(new Point(47.2, 0));
  39. Points.Add(new Point(70.8, 0));
  40. Points.Add(new Point(94.4, 0));
  41. Points.Add(new Point(118, 0));
  42. Points.Add(new Point(141.6, 0));
  43. Points.Add(new Point(35.4, 20.4382));
  44. Points.Add(new Point(59, 20.4382));
  45. Points.Add(new Point(82.6, 20.4382));
  46. Points.Add(new Point(106.2, 20.4382));
  47. Points.Add(new Point(129.8, 20.4382));
  48. Points.Add(new Point(153.4, 20.4382));
  49. Points.Add(new Point(70.8, 40.8764));
  50. Points.Add(new Point(94.4, 40.8764));
  51. Points.Add(new Point(118, 40.8764));
  52. Points.Add(new Point(141.6, 40.8764));
  53. Points.Add(new Point(106.2, 61.3146));
  54. Points.Add(new Point(129.8, 61.3146));
  55. Points.Add(new Point(47.2, 40.8764));
  56. Points.Add(new Point(59, 61.3146));
  57. Points.Add(new Point(70.8, 81.7528));
  58. Points.Add(new Point(82.5999, 102.1911));
  59. Points.Add(new Point(94.3999, 122.6293));
  60. Points.Add(new Point(82.6, 61.3146));
  61. Points.Add(new Point(94.4, 81.7528));
  62. Points.Add(new Point(106.1999, 102.1911));
  63. Points.Add(new Point(117.9999, 81.7529));
  64. Points.Sort(ComparePoints);
  65. int j = 1;
  66. foreach (Point i in Points)
  67. {
  68. Console.Write("{0}\t{1}\t{2}", j, i.x.ToString(),i.y.ToString());
  69. Console.WriteLine();
  70. j++;
  71. }
  72. Console.ReadKey();
  73. }
  74. }
  75. }

Решение задачи: «Сортировка List 2d точек»

textual
Листинг программы
  1. Points = Points.OrderBy(p => p.y, new MyComparer()).ThenBy(p => p.x).ToList();

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


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

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

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

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

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

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