Ir ao conteúdo
  • Cadastre-se

DaFranco

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

2
  1. E como eu faço isso? Só anexos os arquivos ou preciso incluir de uma forma específica? Conforme recomendação do@arfneto, segue a pasta do projeto compactada: Tarefa Grafos Matrix Adjacência.zip
  2. Estou com um problema em um exercício de Grafos por matriz adjacência em que: Minha busca em largura está retornando o ponteiro de pai e não o valor (não sou muito bom com ponteiros), como mostro abaixo: Nas duas buscas, a leitura do CSV está ocorrendo duas vezes, como no seguinte output: Segue o código das funções que criei para resolver esse exercício: struct vertices { int id; /*!< Identificação numérica do vértice */ //int p; // caso seja necessario adicionar o peso /*Dados do BFS*/ int distancia; vertice_t *pai; /*Dados do BDP*/ _Bool visitado; /* Mais informações, se necessário */ }; struct arestas { int adj; /*!< Valor booleando. Verdadeiro representa uma adjacência entre dois vértices */ /* Mais informações, se necessário */ }; struct grafos { int n_vertices; /*!< Número de vértices do grafo */ vertice_t *vertices; /*!< Vetor de ponteiros: conjunto V */ aresta_t **matriz_adj; /* Matriz de adjacência: conjunto E */ }; void dfs(grafo_t *g, int fonte) { int i; pilha_t *pilha = cria_pilha(); for(i = 0; i < g->n_vertices; i++) { g->vertices[i].visitado = FALSE; } push(&g->vertices[fonte], pilha); while(!pilha_vazia(pilha)) { vertice_t *u = pop(pilha); int v; int id_u = u->id; if(g->vertices[id_u].visitado == FALSE) { g->vertices[id_u].visitado = TRUE; for(v = 0; v < g->n_vertices; v++) { if(adjacente(g, id_u, v)) { if(g->vertices[v].visitado == FALSE) { push(&g->vertices[v], pilha); } } } } } mostra_dfs(g); } void mostra_dfs(grafo_t *g) { int i; for(i = 0; i < g->n_vertices; i++) { printf("Vertice %d ",i); if(g->vertices[i].visitado == FALSE) { printf("Não Visitado\n"); } else { printf("Visitado\n"); } } } grafo_t *ler_dados_csv(char *nome_do_arquivo) { grafo_t *g; int n_vertices; // numero de arestas int u,v; FILE *fp =fopen(nome_do_arquivo, "r"); if (fp==NULL) { perror("Erro ao ler grafo"); exit(EXIT_FAILURE); } fscanf(fp, "%d", &n_vertices); g = cria_grafo(n_vertices); while (fscanf(fp, "%d,%d\n", &u, &v) == 2) { cria_adjacencia(g, u, v); cria_adjacencia(g, v, u); } fclose(fp); return g; } Além disso, meu arquivo CSV tem o seguinte formato: Com o primeiro número sendo o total de arestas. Alguma dica de onde posso corrigir?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!