Ir ao conteúdo
  • Cadastre-se

Thiago Murilo

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Tudo que Thiago Murilo postou

  1. Pessoal, estou com um problema, onde através de um arquivo txt eu deve criar um programa para mostrar o Numero de vizinhos, nós e distancia. E depois criar o algoritmo de djkstra dos minimos caminhos a partir de um ponto inicial, o problema é que o meu programa sempre pega o mesmo valor, qualquer caminho inicial que eu pego sempre vai para o ''0', nao sei aonde estou errando. void armazenar(){ char texto[100], filename[100]; int i,j; FILE *arq; strcpy(filename,"centro.txt"); if((arq=fopen(filename,"rt"))==NULL){ printf("Erro ao abrir arquivo: %s",filename); } for(i=0;i<this->n_nos;i++){ for(j=0;j<this->n_nos;j++){ fscanf(arq,"%[^;]; ",&texto); if(strcmp(texto,"0")!=0){ no.no_adj.push_back(j); no.distancia.push_back(atof(texto)); no.n_vizinhos++; } } } fclose(arq); }; void dijkstra(int no_inicial){ int menor_distancia,posicao,linhas,colunas,contador,i,j,precedente; contador=0; std::vector<int>::iterator it; std::vector<float>::iterator ot; float **m; linhas=3; colunas=n_nos; m=(float**)calloc(linhas,sizeof(float*));//m=matriz da tabela la for(i=0;i<linhas;i++){ m=(float*)calloc(colunas,sizeof(float)); } m[2][no_inicial]=1; contador++; precedente=no_inicial; m[1][no_inicial]=precedente; while(contador<this->n_nos){ ot=no[precedente].distancia.begin(); for(it=no[precedente].no_adj.begin();it<no[precedente].no_adj.end();it++){ if(m[2][*it]=0){ m[0][*it]+=*ot; m[1][*it]=precedente; ot++; } } menor_distancia= 20000; posicao=0; for(j=0;j<colunas;j++){ if(m[0][j]>0 && m[2][j]==0 && m[0][j]<menor_distancia){ menor_distancia=m[0][j]; posicao=j; } } m[2][posicao]=1; contador++; precedente=posicao; } }; };

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...