|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - oscarreyesavila
Páginas: [1]
1
« en: Martes 9 de Abril de 2019, 21:55 »
Hola amigos, estoy realizando un código de búsqueda de local, y consiste : #include <stdio.h> #include <stdlib.h> #include <time.h> struct vecinos{ int* vecino; }; typedef struct vecinos Vecinos; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int* asigsol(int); void impsol(int*,int); Vecinos* asigvecinos(void); int fitness(int *,int ); int fitnessVecinos(int *,int ); void crearVecinos(int,int,int,int,int,int[],int,int); void burbuja(int arreglo[],int TAM); int main(int argc, char *argv[]) { int i=1,n; int * solucion; Vecinos vecinos[5]; int f=0,ite; printf("size of the array solution"); scanf("%d",&n); solucion=asigsol(n); printf("solucion innicial"); printf("\n"); impsol(solucion,n); printf("\n------------------------"); crearVecinos(*(solucion+0),*(solucion+1),*(solucion+2),*(solucion+3),*(solucion+4),solucion,n,i); /* vecinos[0].vecino=malloc(3*sizeof(int)); vecinos[0].vecino[0]=1; vecinos[0].vecino[1]=2; vecinos[0].vecino[2]=3; for(i=0;i<3;i++){ printf("%d",vecinos[0].vecino ); } */ free(solucion);
return 0; }
int* asigsol(int n){ int x; int * vecino=malloc(n*sizeof(int));
srand(time(0)); for(x=0;x<n;x++){ *(vecino+x)=(rand()%9)+10;//se genera el número aleatorio entre 0 y 29 }//for return vecino; free(vecino); }
void impsol(int* solucion,int n){ int i; for(i=0;i<n;i++){ printf("VECINOS[%d]=%d",i,solucion); printf("\n"); } }
Vecinos* asigvecinos(void){
Vecinos* vecinos=malloc(5*sizeof(Vecinos));
return vecinos;
}
int fitness(int * arreglo,int n){
int i,r=0,R=0; for(i=0;i<n;i++){ r=*(arreglo+i) * *(arreglo+i); R+=r; }
return R; }
int fitnessVecinos(int * arreglo,int n ){ int i,r=0,R=0; for(i=0;i<n;i++){ r=*(arreglo+i) * *(arreglo+i); R+=r; }
return R; }
void crearVecinos(int a,int b,int c,int d,int e,int Fit[],int n,int i){
int x,j,l; int Fits=0; int A=0,B=0,C=0,D=0,E=0; Vecinos vecinos[5];
for(x=0;x<5;x++){ vecinos- .vecino=malloc(6*sizeof(int));
}
srand(time(0)); for(x=0;x<5;x++){ for(j=0;j<5;j++){ vecinos- .vecino[j]=(rand()%9)+10;
} }
vecinos[0].vecino[5]=a; vecinos[1].vecino[5]=b; vecinos[2].vecino[5]=c; vecinos[3].vecino[5]=d; vecinos[4].vecino[5]=e;
for(l=0;l<5;l++){
impsol(vecinos[l].vecino,6); printf("\n"); }
Fits=fitness(Fit,n); A=fitnessVecinos(vecinos[0].vecino,6); B=fitnessVecinos(vecinos[1].vecino,6); C=fitnessVecinos(vecinos[2].vecino,6); D=fitnessVecinos(vecinos[3].vecino,6); E=fitnessVecinos(vecinos[4].vecino,6);
printf("%d",A); printf("\n"); printf("%d",B);printf("\n"); printf("%d",C);printf("\n"); printf("%d",D);printf("\n"); printf("%d",E);printf("\n"); printf("%d",Fits);printf("\n");
int arreglo[6]={A,B,C,D,E,Fits}; burbuja(arreglo,6); printf("ORdebado-----------------\n"); impsol(arreglo,6); printf("-----------------\n");
while(i<6){
if(Fits==arreglo[0]){ printf("fits\n"); i++; crearVecinos(Fit[0],Fit[1],Fit[2],Fit[3],Fit[4],Fit,n,i);
}else{
if(arreglo[0]==A){ printf("A"); i++; crearVecinos(vecinos[0].vecino[0],vecinos[0].vecino[1],vecinos[0].vecino[2],vecinos[0].vecino[3],vecinos[0].vecino[4],vecinos[0].vecino,6,i); }
if(arreglo[0]==B){ printf("B"); i++; crearVecinos(vecinos[1].vecino[0],vecinos[1].vecino[1],vecinos[1].vecino[2],vecinos[1].vecino[3],vecinos[1].vecino[4],vecinos[1].vecino,6,i); } if(arreglo[0]==C){ printf("C"); i++; crearVecinos(vecinos[2].vecino[0],vecinos[2].vecino[1],vecinos[2].vecino[2],vecinos[2].vecino[3],vecinos[2].vecino[4],vecinos[2].vecino,6,i); } if(arreglo[0]==D){ printf("D"); i++; crearVecinos(vecinos[3].vecino[0],vecinos[3].vecino[1],vecinos[3].vecino[2],vecinos[3].vecino[3],vecinos[3].vecino[4],vecinos[3].vecino,6,i); } if(arreglo[0]==E){ printf("E"); i++; crearVecinos(vecinos[4].vecino[0],vecinos[4].vecino[1],vecinos[4].vecino[2],vecinos[4].vecino[3],vecinos[4].vecino[4],vecinos[4].vecino,6,i); }
}
}
}
void burbuja(int lista[],int TAM){
int i,j,temp; for (i=1;i<TAM;i++) { for (j=0;j<TAM-1;j++) { if (lista[j] > lista[j+1]) //condicion { temp = lista[j]; //temp guarda momentaneamente el valor de lista[j] lista[j]=lista[j+1]; //Asigno al la posicion lista[j], lo que hay en lista[j+1] lista[j+1]=temp; //obtendra un nuevo valor por parte de temp. } }
} }
Alguien puede ayudarme en mi funcion crearvecinos, por que cuando entra en el ciclo while me arroja valores raros ,o tengo que liberar memoria,por que me sale otra cosa.
Páginas: [1]
|
|
|