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.
Pergunta
alexborges1
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.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.