Discussione: [c]errore codice
View Single Post
Old 07-01-2014, 09:15   #1
mikael_c
Member
 
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
[c]errore codice

nel codice sottostante c è un errore testandolo secondo me l'errore è nell: if(!flag){k=n} e ho messo un controllo del tipo if(nv==0){k=n;} overro serve per terminare il ciclo perchè non ha trovato valori ammissibili dopo dopo lo scambio di Adj[v][x] con Adj[v][nv].Secondo voi va bene? o avete altre soluzioni?

Codice:
Codice:
 
for(k=0;k<n;k++)
 { 

	         
            if(k==0){
             x=rand()%(n-k);             
              x=k+x;
             }
             
            
                if(k>0)
                { 

/*Inizializzazione Varibile v = Chr[k-1]*/
                
	     v = Chr[k-1];

/*Inizializzazione Varibile nv = v*/

             nv = nAdj[v];
                     
	     flag=1; /* se = 1 indica che non esiste un vertice adiacente ammissibile di v */
		                     
         for(a=0;a<nAdj[v];a++) 
	      {

/*Scelta casuale tra 0 e nAdj[v]-1*/
 
               x = rand()%nv;
               y=Adj[v][x];  


/*Scambio Adj[v][x] con Adj[v][nv]*/

 	       Adj[v][x]=Adj[v][nv-1];
	       Adj[v][nv-1]=y;
               nv--;
                       if(nv==0){k=n;}
                             /* if(!flag){k=n;}*/
              
                if(Chr1[y]>=k)
                {x=Chr1[y];a=nAdj[v];flag=0;
                 /*printf("Trovato ammissibile:%d in posizione:%d di Chr\n\n",y,Chr1[y]);*/
                }
                
               
               /*Fine Ciclo for(a=0...) */
                
               }
                                              
             /* Fine if(k>0) */

           }

        if(k==0){
/* scambia l'elemento k-esimo con l'x-esimo in Chr[] */    

            y=Chr[k];
	    Chr[k]=Chr[x];
	    Chr[x]=y;
	    Chr1[Chr[k]]=x;
       

/* fine k==0 */     
	  }

/* fine ciclo generazione casuale permutazione casuale for(k=... */

         }

Ultima modifica di mikael_c : 13-01-2014 alle 08:17.
mikael_c è offline   Rispondi citando il messaggio o parte di esso