Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 21:44   #1
Stasiksis
Пользователь
 
Регистрация: 12.09.2011
Сообщений: 19
По умолчанию Ошибка в задаче с графами

Код:
class Vertex{
int lab;

Vertex()
{
    lab = 0;

}
Vertex(int x)
{
    lab = x;
  
}
Vertex(Vertex v)
{
    lab = v.lab;
    
}
public int getLabel()
{
    return lab;
}
public void setLabel(int x)
{
    lab = x;
}
 
}

class Digraph {
    
    int label1,k;
    int[][] matr_Smez;
    Vertex[] vert;
    Digraph()
    {
        vert= new Vertex[1000];
        matr_Smez=new int[1000][];
        for(int i=0;i<1000;i++)
            matr_Smez[i]=new int[1000];
       
    }
    void addVertex(Vertex v)
    {
       vert[k].setLabel(v.lab);
       k++;
    }
    void link(Vertex a,Vertex b)
    {
        matr_Smez[implFind(a)][implFind(b)]=1;
    }
    int implFind(Vertex a)
    {   
        for(int i = 0; i < k; i++)
            if(vert[i].getLabel() == a.getLabel())
                return i;
       
    }
    void unlink(Vertex a,Vertex b)
    {
        matr_Smez[implFind(a)][implFind(b)] = 0;
    }
    void delVertex(Vertex v)
    {
        for(int i=0;i<k;i++)
            for(int j=implFind(v)+1;j<k;j++)
            {   
                matr_Smez[i][j-1] = matr_Smez[i][j];
                matr_Smez[j-1][i] = matr_Smez[j][i];
                matr_Smez[j][i] = 0;
            }
        for(int j = implFind(v) + 1; j < k; j++)
        {
            vert[j-1].lab = vert[j].lab;
        }
        k--;
    }
    Vertex[] dfs()
    {
        impl_dfs(0);
        Vertex[] u;
        int z = 0;
        u=new Vertex[1000];
        for(int i = 1; i < k; i++)
        {
            if(matr_Smez[i][i] == 1)
            {   u[z] = vert[i];
                z++;
            }
        }
        for(int i = 1; i < k; i++)
        {
            matr_Smez[i][i] = 0;
        }
        return u;
    }
    void impl_dfs(int p)
    {
        if(matr_Smez[p][p] == 0)
        {   matr_Smez[p][p] = 1;
            for(int i = p; i < k ; i++) 
                if(matr_Smez[p][i] != 0)
                    impl_dfs(i);
        }
    }
    Vertex[] bfs()
    {
        int[] que = new int[1000];
        int start = 0, end = 1;
        matr_Smez[0][0] = 1;
        while(start != end)
        {
            for(int i = que[start] + 1; i < k; i++)
                if(matr_Smez[que[start]][i] == 1)
                {
                    que[end] = i;
                    end++;
                }
            start++;
        }
        Vertex[] u;
        int z = 0;
        u = new Vertex[1000];
        for(int i = 1; i < k; i++)
        {
            if(matr_Smez[i][i] == 1)
            {   u[z] = vert[i];
                z++;
            }
        }
        for(int i = 1; i < k; i++)
        {
            matr_Smez[i][i] = 0;
        }
        return u;
    }
}

class Graph extends Digraph
{
    void link(Vertex a,Vertex b)
    {
        matr_Smez[implFind(a)][implFind(b)] = 1;
        matr_Smez[implFind(b)][implFind(a)] = 1;
    }
    void unlink(Vertex a,Vertex b)
    {
        matr_Smez[implFind(a)][implFind(b)] = 0;
        matr_Smez[implFind(b)][implFind(a)] = 0;
    }
} 
public class Main {
    
    public static void main(String[] args) {
        Digraph gr;
        
        gr.addVertex(1);
        gr.addVertex(2);
        gr.addVertex(3);
        gr.link(1,2);
        gr.link(1,3);
        Vertex[] u;
        u=gr.dfs();
        System.out.println("ololo ");
        for(int i = 0; u[i].getLabel() != 0; i++)
            System.out.print(u[i].getLabel());
        gr.unlink(1, 3); 
        u=gr.bfs();
        System.out.println("ololo  ");
        for(int i = 0; u[i].getLabel() != 0; i++)
            System.out.print(u[i].getLabel());
        Graph gr1;
        gr1.addVertex(1);
        gr1.addVertex(2);
        gr1.addVertex(3);
        gr1.link(1,2);
        gr1.link(1,3);
        Vertex[] u;
        u=gr1.dfs();
        System.out.println("ololo ");
        for(int i = 0; u[i].getLabel() != 0; i++)
            System.out.print(u[i].getLabel());
        gr1.unlink(1, 3); 
        u=gr1.bfs();
        System.out.println("ololo");
        for(int i = 0; u[i].getLabel() != 0; i++)
            System.out.print(u[i].getLabel());
    }

}
Выдает 14 ошибок по типу этой:
Код:
Main.java:157: addVertex(Vertex) in Digraph cannot be applied to (int)
        gr.addVertex(1);
          ^
Как я понимаю, я передаю инты, а надо передавать типа Vertex, ну как я писал класс Vertex, он должен принимать и обрабатывать инты вначале, в чем я не прав и как исправить, подскажите, пожалуйста.
Stasiksis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в задаче mrX91 Паскаль, Turbo Pascal, PascalABC.NET 12 18.06.2012 02:57
где ошибка в простой задаче?) paxan86 Общие вопросы C/C++ 6 15.12.2011 19:06
Ошибка в задаче на turbo pascal SkuLLL Помощь студентам 1 14.11.2010 20:56
Ошибка в задаче!!! Stiffler Помощь студентам 6 08.12.2009 19:49
ошибка в задаче с матрицей Валюшка Помощь студентам 2 08.02.2009 16:54