Много ошибок в коде при одной только его вставке - C#
Формулировка задачи:
Когда вставляю код, мне VS сразу выдает 18 ошибок. Что не так??
Листинг программы
- class Edge
- {
- public int v1, v2;
- public int weight;
- public Edge(int v1, int v2, int weight)
- {
- this.v1 = v1;
- this.v2 = v2;
- this.weight = weight;
- }
- }
- //алгоритм Прима
- public void algorithmByPrim(int numberV, List<Edge> E, List<Edge> MST)
- {
- //неиспользованные ребра
- List<Edge> notUsedE = new List<Edge>(E);
- //использованные вершины
- List<int> usedV = new List<int>();
- //неиспользованные вершины
- List<int> notUsedV = new List<int>();
- for (int i = 0; i < numberV; i++)
- notUsedV.Add(i);
- //выбираем случайную начальную вершину
- Random rand = new Random();
- usedV.Add(rand.Next(0, numberV));
- notUsedV.RemoveAt(usedV[0]);
- while (notUsedV.Count > 0)
- {
- int minE = -1; //номер наименьшего ребра
- //поиск наименьшего ребра
- for (int i = 0; i < notUsedE.Count; i++)
- {
- if ((usedV.IndexOf(notUsedE[i].v1) != -1) && (notUsedV.IndexOf(notUsedE[i].v2) != -1) ||
- (usedV.IndexOf(notUsedE[i].v2) != -1) && (notUsedV.IndexOf(notUsedE[i].v1) != -1))
- {
- if (minE != -1)
- {
- if (notUsedE[i].weight < notUsedE[minE].weight)
- minE = i;
- }
- else
- minE = i;
- }
- }
- //заносим новую вершину в список использованных и удаляем ее из списка неиспользованных
- if (usedV.IndexOf(notUsedE[minE].v1) != -1)
- {
- usedV.Add(notUsedE[minE].v2);
- notUsedV.Remove(notUsedE[minE].v2);
- }
- else
- {
- usedV.Add(notUsedE[minE].v1);
- notUsedV.Remove(notUsedE[minE].v1);
- }
- //заносим новое ребро в дерево и удаляем его из списка неиспользованных
- MST.Add(notUsedE[minE]);
- notUsedE.RemoveAt(minE);
- }
- }
Решение задачи: «Много ошибок в коде при одной только его вставке»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication7
- {
- class Edge
- {
- public int v1, v2;
- public int weight;
- public Edge(int v1, int v2, int weight)
- {
- this.v1 = v1;
- this.v2 = v2;
- this.weight = weight;
- }
- public void algorithmByPrim(int numberV, List<Edge> E, List<Edge> MST)
- {
- //неиспользованные ребра
- List<Edge> notUsedE = new List<Edge>(E);
- //использованные вершины
- List<int> usedV = new List<int>();
- //неиспользованные вершины
- List<int> notUsedV = new List<int>();
- for (int i = 0; i < numberV; i++)
- notUsedV.Add(i);
- //выбираем случайную начальную вершину
- Random rand = new Random();
- usedV.Add(rand.Next(0, numberV));
- notUsedV.RemoveAt(usedV[0]);
- while (notUsedV.Count > 0)
- {
- int minE = -1; //номер наименьшего ребра
- //поиск наименьшего ребра
- for (int i = 0; i < notUsedE.Count; i++)
- {
- if ((usedV.IndexOf(notUsedE[i].v1) != -1) && (notUsedV.IndexOf(notUsedE[i].v2) != -1) ||
- (usedV.IndexOf(notUsedE[i].v2) != -1) && (notUsedV.IndexOf(notUsedE[i].v1) != -1))
- {
- if (minE != -1)
- {
- if (notUsedE[i].weight < notUsedE[minE].weight)
- minE = i;
- }
- else
- minE = i;
- }
- }
- //заносим новую вершину в список использованных и удаляем ее из списка неиспользованных
- if (usedV.IndexOf(notUsedE[minE].v1) != -1)
- {
- usedV.Add(notUsedE[minE].v2);
- notUsedV.Remove(notUsedE[minE].v2);
- }
- else
- {
- usedV.Add(notUsedE[minE].v1);
- notUsedV.Remove(notUsedE[minE].v1);
- }
- //заносим новое ребро в дерево и удаляем его из списка неиспользованных
- MST.Add(notUsedE[minE]);
- notUsedE.RemoveAt(minE);
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д