Много ошибок в коде при одной только его вставке - C#

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

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

Когда вставляю код, мне VS сразу выдает 18 ошибок. Что не так??
Листинг программы
  1. class Edge
  2. {
  3. public int v1, v2;
  4. public int weight;
  5. public Edge(int v1, int v2, int weight)
  6. {
  7. this.v1 = v1;
  8. this.v2 = v2;
  9. this.weight = weight;
  10. }
  11. }
  12. //алгоритм Прима
  13. public void algorithmByPrim(int numberV, List<Edge> E, List<Edge> MST)
  14. {
  15. //неиспользованные ребра
  16. List<Edge> notUsedE = new List<Edge>(E);
  17. //использованные вершины
  18. List<int> usedV = new List<int>();
  19. //неиспользованные вершины
  20. List<int> notUsedV = new List<int>();
  21. for (int i = 0; i < numberV; i++)
  22. notUsedV.Add(i);
  23. //выбираем случайную начальную вершину
  24. Random rand = new Random();
  25. usedV.Add(rand.Next(0, numberV));
  26. notUsedV.RemoveAt(usedV[0]);
  27. while (notUsedV.Count > 0)
  28. {
  29. int minE = -1; //номер наименьшего ребра
  30. //поиск наименьшего ребра
  31. for (int i = 0; i < notUsedE.Count; i++)
  32. {
  33. if ((usedV.IndexOf(notUsedE[i].v1) != -1) && (notUsedV.IndexOf(notUsedE[i].v2) != -1) ||
  34. (usedV.IndexOf(notUsedE[i].v2) != -1) && (notUsedV.IndexOf(notUsedE[i].v1) != -1))
  35. {
  36. if (minE != -1)
  37. {
  38. if (notUsedE[i].weight < notUsedE[minE].weight)
  39. minE = i;
  40. }
  41. else
  42. minE = i;
  43. }
  44. }
  45. //заносим новую вершину в список использованных и удаляем ее из списка неиспользованных
  46. if (usedV.IndexOf(notUsedE[minE].v1) != -1)
  47. {
  48. usedV.Add(notUsedE[minE].v2);
  49. notUsedV.Remove(notUsedE[minE].v2);
  50. }
  51. else
  52. {
  53. usedV.Add(notUsedE[minE].v1);
  54. notUsedV.Remove(notUsedE[minE].v1);
  55. }
  56. //заносим новое ребро в дерево и удаляем его из списка неиспользованных
  57. MST.Add(notUsedE[minE]);
  58. notUsedE.RemoveAt(minE);
  59. }
  60. }

Решение задачи: «Много ошибок в коде при одной только его вставке»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication7
  8. {
  9.     class Edge
  10.     {
  11.  
  12.  
  13.         public int v1, v2;
  14.  
  15.         public int weight;
  16.  
  17.         public Edge(int v1, int v2, int weight)
  18.         {
  19.             this.v1 = v1;
  20.             this.v2 = v2;
  21.             this.weight = weight;
  22.         }
  23.  
  24.         public void algorithmByPrim(int numberV, List<Edge> E, List<Edge> MST)
  25.         {
  26.             //неиспользованные ребра
  27.             List<Edge> notUsedE = new List<Edge>(E);
  28.             //использованные вершины
  29.             List<int> usedV = new List<int>();
  30.             //неиспользованные вершины
  31.             List<int> notUsedV = new List<int>();
  32.             for (int i = 0; i < numberV; i++)
  33.                 notUsedV.Add(i);
  34.             //выбираем случайную начальную вершину
  35.             Random rand = new Random();
  36.             usedV.Add(rand.Next(0, numberV));
  37.             notUsedV.RemoveAt(usedV[0]);
  38.             while (notUsedV.Count > 0)
  39.             {
  40.                 int minE = -1; //номер наименьшего ребра
  41.                 //поиск наименьшего ребра
  42.                 for (int i = 0; i < notUsedE.Count; i++)
  43.                 {
  44.                     if ((usedV.IndexOf(notUsedE[i].v1) != -1) && (notUsedV.IndexOf(notUsedE[i].v2) != -1) ||
  45.                         (usedV.IndexOf(notUsedE[i].v2) != -1) && (notUsedV.IndexOf(notUsedE[i].v1) != -1))
  46.                     {
  47.                         if (minE != -1)
  48.                         {
  49.                             if (notUsedE[i].weight < notUsedE[minE].weight)
  50.                                 minE = i;
  51.                         }
  52.                         else
  53.                             minE = i;
  54.                     }
  55.                 }
  56.                 //заносим новую вершину в список использованных и удаляем ее из списка неиспользованных
  57.                 if (usedV.IndexOf(notUsedE[minE].v1) != -1)
  58.                 {
  59.                     usedV.Add(notUsedE[minE].v2);
  60.                     notUsedV.Remove(notUsedE[minE].v2);
  61.                 }
  62.                 else
  63.                 {
  64.                     usedV.Add(notUsedE[minE].v1);
  65.                     notUsedV.Remove(notUsedE[minE].v1);
  66.                 }
  67.                 //заносим новое ребро в дерево и удаляем его из списка неиспользованных
  68.                 MST.Add(notUsedE[minE]);
  69.                 notUsedE.RemoveAt(minE);
  70.             }
  71.         }
  72.     }
  73. }

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


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

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

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

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

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

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