Jump to content
Fórum Script Brasil
  • 0

Algoritmo de kruskal HELP.


Question

Bom pessoa boa noite, comecei a fazer um trabalho da faculdade de grafos, que é pra ler um arquivo .txt contendo uma matriz nesse arquivo e o programa mostrar a arvore minima geradora pelo algoritmo de Kruskal, eu so não consegui fazer até agora essa parte desse algoritmo, achei muito complexo, vou postar aqui a parte do meu codigo onde ler o arquivo, se alguém poder me ajudar agradeço muito.

Program AlgoritmoemGrafos;
uses crt, dos;

var
MAdjacencia : Array [1..100,1..100] of integer; {Matriz de Adjacencia do Grafo}
n,m         : Integer;      {Quantidade de Vertices e de Arestas direcionadas do Grafo}
arquivo     : Text;         {Arquivo texto onde esta o Grafo}
arqok       : Boolean;      {Arquivo encontrado ou não}
nomearquivo : String;       {Nome do arquivo a ser utilizado}
Auxarq      : Char;         {Auxiliar para colocar os dados do arquivo na matriz}
Snumero     : String;       {Numero do arquivo em formato String}
Inumero     : Integer;      {Numero do arquivo em formato inteiro}
I, J        : Integer;      {Auxiliares para varrer a matriz}
erro        : Integer;      {Erro na transformacao de String para Inteiro}


{============ VARIAVEIS DOS ALUNOS =============}





{======= FIM DAS VARIAVEIS DOS ALUNOS ==========}

begin
     textbackground(1);
     clrscr;
     arqok := false;
     while not arqok do         {Verificando a existencia do arquivo}
     begin
          write('Digite o nome do arquivo: ');
          readln (nomearquivo);
          if Fsearch (nomearquivo,'') <> '' then
          begin
               arqok := true;
               writeln('Arquivo localizado com sucesso!');
               readkey;
               clrscr;
          end
          else
          begin
               writeln ('Arquivo inexistente, tente novamente!')
          end;
     end;

     for i := 1 to 100 do
     for j := 1 to 100 do
     MAdjacencia [i,j] := 0;

     writeln('Trabalhos dos alunos: X, Y e Z');
     {Substituir o X, Y e Z pelo nome dos componentes da equipe e excluir esse comentario}
     writeln(' ');

     writeln('Matriz de Adjacencia do Grafo no arquivo:');
     writeln(' ');

     assign (arquivo, nomearquivo);
     reset (arquivo);

     snumero := '';
     i := 1;    {Preenchimento inicial na linha  1 }
     j := 1;    {Preenchimento inicial na coluna 1 }
     m := 0;

     While not eof (arquivo) do         {Preenchimento da Matriz de Adjacencia do Grafo}
     begin

          read(arquivo, auxarq);

          if (auxarq <> ' ') and (auxarq <> chr(13)) and (auxarq <> chr(10)) then
          begin
               snumero := concat (snumero,auxarq);
          end
          else
          begin
               val (snumero,inumero,erro);

               if (erro <> 0) and (auxarq <> chr(10)) then
               begin
                    Writeln('Erro: ', erro,'. Arquivo não possui um grafo');
                    readkey;
                    halt;
               end;

               snumero := '';
               MAdjacencia [i,j] := inumero;

               if inumero <> 0 then m := m + 1; {Definindo a quantidade de Arestas Dirigidas em digrafos}


               if auxarq = ' ' then
               begin
                    write (MAdjacencia [i,j], ' ');
                    j := j + 1;
               end
               else
               begin
                    if (auxarq <> chr(10)) then
                    begin
                         writeln (MAdjacencia [i,j], ' ');
                         i := i + 1;
                         j := 1;
                    end;
               end;
          end;          {do if}
     end;               {do while eof}


          val (snumero,inumero,erro);
          if (erro <> 0) and (auxarq <> chr(10)) then
               begin
                    Writeln('Erro: ', erro,'. Arquivo não possui um grafo');
                    readkey;
                    halt;
               end;
          MAdjacencia [i,j] := inumero;

          if inumero <> 0 then m := m + 1; {Definindo a quantidade de Arestas Dirigidas em digrafos}


     writeln (MAdjacencia [i,j], ' ');
     {m := m div 2; {descomente essa linha para grafos}
     n := i;
     writeln('');
     writeln('');
     writeln('n= ',n, ' e m= ', m);

     close(arquivo);
     readkey;


{=== CODIGODe Kruskal implementar a partir dessa linha ====}



end.

 

Link to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148856
    • Total Posts
      644852
×
×
  • Create New...