Много ошибок в коде при одной только его вставке - 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);
            }
        }
    }
}

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


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

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

13   голосов , оценка 4.308 из 5
Похожие ответы