Vous êtes sur la page 1sur 3

#include <stdio.

h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <iostream>
int main (void)
{
int i,col,linha,a,b,l,coluna,auxc,auxl,plinha,pcoluna,alet,x,menor,p,axt,m,n
,letra,letra2,z,y,ix,aux,j,c,custo;
int matriz[26][26];
i=0;
col=25;
custo=0;
linha=1;
char space,nl;
nl='\n';
space=' ';
/* Funo para que vai aleatoriamente passar a cidade de partida*/
srand (time(NULL));
alet=rand() % 25;
/* Parte do codigo que vai zerrar todas as celulas da matriz*/
for(b=0;b<=25;b++){
for(l=0;l<=25;l++){
matriz[b][l]=0;
}
}
/* Parte de codigo que vai ler os dados do arquivo passado pela professora*/
FILE * pFile;
pFile = fopen ("C:\\file\\fri26.tsp","r");
if (pFile!=NULL)
{
/*Nesta parte do codigo os dados lidos so passados para matriz
na qual o primeiro valor inserido na ltima coluna da primeira linha e vai
decrementando
a posio da coluna at chegar a zero e aps isso incrementado a linha e feito a
mesma coisa para
as colunas,possibilitando ter a diagonal principar com inicio e fim nas
posioes [0,25] e [25,25]*/
a=0;
while(!feof(pFile)){
while(a<=col){
fflush(stdin);
fscanf (pFile, "%d", &matriz[i][col]);
col--;
if(col==a){i++;
col=25;
a++;
}
}
}
fclose (pFile);
}
/* Este trecho de codigo espelha os dados na diagonal superior na diagonal infer
ior */
for(linha=0;linha<=25;linha++){
auxl=linha;
for(coluna=0;coluna<=25;coluna++){
auxc=coluna;
matriz[auxc][auxl]=matriz[linha][coluna];
}
}
/* Este trecho do cdigo imprime toda a matriz na tela com as cidade de A-Z*/
printf("%c%c%c",space,space,space);
for(n=0;n<26;n++){
letra=65+n;
printf("[ %c ]",letra);
}
for(plinha=0;plinha<=25;plinha++){
printf("\n");
letra2=plinha+65;
printf("[%c]",letra2);
for(pcoluna=0;pcoluna<=25;pcoluna++){
if(matriz[plinha][pcoluna]>99){
printf("[%d]",matriz[plinha][pcoluna]) ;
}else if(matriz[plinha][pcoluna]>9){
printf("[ %d]",matriz[plinha][pcoluna]) ;
}else{
printf("[ %d ]",matriz[plinha][pcoluna]) ;
}
}
}
printf("\n");
/* A parte da logica da escolha da rota baseada no vizinho mais proximo(Bugado)*
/
for(p=0;p<26;p++){
if(alet<25){
menor=matriz[alet][0];
}else{
menor=matriz[alet][1];;
}

if(p>0){
alet=axt;
for(m=0;m<26;m++){
matriz[m][axt]=0;
}
}
if(p==0){
axt=0;
}
for ( x = 0; x < 26; x++ ){
if ( (matriz[alet][x] < menor)&& (matriz[alet][x]!=0) ){
menor = matriz[alet][x];
axt=x;
custo=custo+x;
}
}

for(plinha=0;plinha<=25;plinha++){
printf("\n");
for(pcoluna=0;pcoluna<=25;pcoluna++){
if(matriz[plinha][pcoluna]>99){
printf("[%d]",matriz[plinha][pcoluna]) ;
}else if(matriz[plinha][pcoluna]>9){
printf("[ %d]",matriz[plinha][pcoluna]) ;
}else{
printf("[ %d ]",matriz[plinha][pcoluna]) ;
}
}
letra2=plinha+65;
printf("[%c]",letra2);
}

z=25-axt;
printf("partindo da cidade %c com o custo de viagem %d vai para a cidade %c\
n",alet+65,menor,90-z);
}
printf("\nO custo total do percurso e %d",custo);
}

Vous aimerez peut-être aussi