View Single Post
Old 29-08-2013, 10:15   #10
mikael_c
Member
 
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
Aiuto Risoluzione errori compilazione

Ho unito i 2 main in un unico programma viene eseguito il tutto però non mi produce risultati.



Codice:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>


const int N0=10; /* limite inferiore al numero di vertici dei digrafi da generare */
const int N=10; /* limite superiore al numero di vertici dei digrafi da generare */
const int H0=0;  /* limite inferiore al numero dei digrafi da generare */
const int H=10; /* limite superiore al numero dei digrafi da generare */

/* variabili globali */
typedef int matrice [10][10] ; /* matrice adiacenza dei grafi */
matrice  m;
int Chr[100];  /* vettore soluzione (permutazione) */
int Chr1[100]; /* soluzione inversa */
int nChr=0;    /* numero soluzioni costruite dalla procedura esaustiva */
int Succ=1;    /* flag che indica il successo della procedura esaustiva */
int n=3;	       /* numero vertici digrafi */
double p=0.0;
double supp=0.0;
double infp=0.0;


void  genera_matrice(matrice  m, size_t n, double p)  {
    size_t  i = 0,  j = 0;
   
    srand((unsigned)  time(NULL));
    for  (i = 0;  i < n; i++) {
        for  (j = 0;  j < n; j++) { m[i][j]  =  rand() < p * RAND_MAX ? 1 : 0; }
    }
}

void  stampa_matrice(matrice  m, size_t n)  {
    size_t  i = 0,  j = 0;
    
    for (i = 0; i < n; i++)  {
        for  (j = 0; j < n; j++) { printf("%d  ",  m[i][j]); }
        printf("\n");
    }
}


void initChr()
 {
  int i=0;

  for(i=0;i<n;i++)
   {
       Chr[i]=n;
       Chr1[i]=n;

   }
 }

/* procedura di stampa di Chr[] */

void stampaVett()
 {
  int i=0;

  for(i=0;i<n;i++)
   printf ("%d ",Chr[i]);
  printf("\n");
 }

/* procedura esaustiva di calcolo soluzioni */
/* ho modificato da void a int per errori*/
int genTPerm(int k)
 {
  int i=0;

  if(k>(n-1))
   {
    stampaVett();

    /* verifica se la soluzione trovata è un ciclo: se si succ=1 e termina genTPerm */

    nChr++;

    if(nChr>n)
     {

     Succ=0;
     return  ;


     }
   }
  else
   for(i=0;i<n;i++)
    {if(Chr1[i]==n)
      {Chr[k]=i;
       Chr1[i]=k;
       genTPerm(k+1);
       Chr1[i]=n;
       Chr[k]=n;

      }
    }
 }




int main(void)
{   
      int i=0, k=0,flag=0;
      double p = 0.5;
      nChr = 0;
      int n,h;
      int media[n];
      int media2[n];
      int devstandard[n];
       initChr();
      genTPerm(0);
    for ( n=10;n<N;n++){
     for( h=0;h<H;h=h+2){
       p=0.5;
	    supp=1.0;
        infp=0.0;
        flag = 1;
        while(flag)
         { 
	      genera_matrice(m, n, p);
         int  succ=genTPerm(0);
          if(succ==0){infp=p; p=0.5*(supp+p);}
          else{supp=p;p=0.5*(p+infp);}
          if(fabs(infp-supp)<.05){flag=0;}

/* fine ciclo while(flag) */

         }
          
        media[n]+=supp;
        media2[n]+=supp*supp;

/* fine ciclo for(h... */

       }
       devstandard[n]=sqrt(1/(H-1)*(media2[n]-media[n]*media[n]));
       media[n]=media[n]/(H-1);

/* fine ciclo for(n... */

      }
}
mikael_c è offline   Rispondi citando il messaggio o parte di esso