Main

di il
10 risposte

Main

Mi potete dare una mano a scrivere correttamente il main presente sotto in modo da poterlo far funzionare.
for n
  for h /* h TIENE CONTO DEL NUMERO DI GRAFI G GENERATI SU CUI CALCOLARE LE STATISTICHE */
   {p=1/2;supp=1;infp=0;
    flag=1;
    while(flag)
     {GENERA GRAFO p-CASUALE G CON N VERTICI;
      genTPerm(0);/è una mia procedura
      if(succ==0)
       {infp=p;p=(supp+p)/2;}
      else 
       {supp=p;p=(p+infp)/2;}
      if(abs(infp-supp)<.05) flag=0;
      media[n]=media[n]+supp;
      }

10 Risposte

  • Re: Main

    In che linguaggio è scritto il codice?
  • Re: Main

    Deve essere scritto in C
  • Re: Main

    Appunto deve. Quando sarà scritto in C possiamo aiutarti a fare un main.
  • Re: Main

    Come incomincio l'implementazione visto che non conosco molto bene il C??
  • Re: Main

    
    #include <stdio.h>
    
    int main()
    {
        return 0;
    }
    
  • Re: Main

    Il main l ho scritto pero devo unire altri 2 programmini al seguente main come faccio:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    
    #define N0 [10] /* limite inferiore al numero di vertici dei digrafi da generare */
    #define N  [10] /* limite superiore al numero di vertici dei digrafi da generare */
    #define H0 [0]  /* limite inferiore al numero dei digrafi da generare */
    #define H  [10] /* limite superiore al numero dei digrafi da generare */
    
    /* variabili globali */
    
    int n=0;
    double p=0.0;
    double supp=0.0;
    double infp=0.0;
    unsigned m[100][100]; /* matrice adiacenza dei grafi */ 
    
    /* ... */
    
    main()
    { int flag=0;
      int m[N][N] = { 0 };
      void generaGrafo();
      unsigned genTPerm();
    
        n = N0;
        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) 
             {generaGrafo();
              succ=genTPerm();
              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... */
    
          }
    }
    }
    
    
    
    
    
    
    
    
    
    
    
  • Re: Main

    Gli altri 2 programmini :
    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 */
     
    /* procedura di inizializzazione dei vettori soluzione (Chr[] e Chr1[]) */
    
    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 */
    
    
    /* metto 0 nella prima posizione e generola permutazione su 1 2,
    poi metto 1 nella prima posizione e genero la permutazione su 0 2, 
    ed infine metto 2 nella prima posizione e genero la permutazione su 0 1 , */
    
    
    void 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;
          
          }
        }
     }
    
    /* programma principale */
    
    int  main(void)
     {
      int i=0, k=0;
    /* inizializza variabili, vettori e strutture dati */
      nChr = 0;
      initChr(); /* procedura che inizializza Chr e Chr1 */
      genTPerm(0); /* procedura esaustiva per il calcolo di soluzioni */
     
      }
    * Definisco un nuovo tipo per le matrici.. */
    #define N 10
    typedef int matrice[N][N];
    void degrees();
    void  genera_matrice(matrice  m, size_t n, double p)  {
        size_t  i = 0,  j = 0;
        assert(n <= N);
        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;
        assert(n <= N);
        for (i = 0; i < n; i++)  { 
            for  (j = 0; j < n; j++) { printf("%d  ",  m[i][j]); }
            printf("\n");
        }
    }
    
    
        
        
        
     
     
     
    
    
    
    
    int  main(void)
    {   int i;
        double p = 0.5;
        size_t n = 5;
        matrice  m;
        int indegrees[N], outdegrees[N];
       
        genera_matrice(m, n, p);
        stampa_matrice(m, n);
       
        }
        
        
        return 0;
    }
    
  • Re: Main

    assert(n <= N);
    Sai usare gli assert e non sai unire le funzioni al main?
  • Re: Main

    Si perchè gli ho scritti con un prof, come faccio ad unirli senza fare errori per piacere mi potete dare una mano
  • Re: Main

    Scusate ma c è qualcuno disposto a darmi una mano,perchè non so proprio come fare, grazie
Devi accedere o registrarti per scrivere nel forum
10 risposte