Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Dividere un progetto in più file

    Buongiorno qualcuno saprebbe suddividere il mio progetto in più file spiegandomi come andrebbe fatto ? Sono ore che cerco una guida ma non riesco a farlo funzionare.. Ho trovato 1000 suggerimenti diversi ma alla fine non funziona, forse sbaglio qualcosa...

    codice:
    /*Si vuole sviluppare un algoritmo di calcolo del centroide. L’algoritmo considera una scacchiera di 30x30 caselle e dispone
    a caso (usando la function rand) 50 oggetti (la posizione è una coppia di numeri interi). L’algoritmo deve visualizzare la scacchiera,
    mostrando un ‘ ’,per le caselle non occupate e mostrando una ‘X’ per le caselle occupate dagli oggetti.
    L’algoritmo determina il centroide dell’insieme dei 50 oggetti: il centroide è un punto della scacchiera che ha per ascissa
    l’intero più vicino alla media delle ascisse di tutti gli oggetti e per ordinata l’intero più vicino alla media
    delle ordinate di tutti gli oggetti. L’algoritmo deve visualizzare di nuovo la scacchiera, indicando,
    oltre alle caselle vuote e a quelle occupate, anche la posizione del centroide (indicandola con la lettera ‘C’).
    Infine, l’algoritmo calcola e visualizza la distanza di ognuno degli oggetti dal centroide, e determina e visualizza sia la
    minima distanza (indicando anche la posizione dell’oggetto a minima distanza) sia la massima distanza
    (indicando anche la posizione dell’oggetto a massima distanza).
    */
    
    
    /*
    struct auto_S{int prova,float f, char c} automobile;
    
    
    int funzioneprfjborit(automobile variabile[90]){
    
    
        scanf("%d",&variabile[0].prova);
        scanf("%c",&variabile[0].c);
    }
    
    
    */
    
    
    
    
    #include <math.h>   //LIBRERIA CONTENENTE LA FUNZIONE POW
    #include <stdio.h>  //LIBRERIA CONTENETE LE FUNZIONI PRINTF/SCANF
    #include <stdlib.h> //LIBRERIA CONTENETE LA FUNZIONE RAND
    #include <time.h>   //CONTIENE LA FUNZIONE CLOCK
    void distanze(int dim,int scacchiera[dim][dim],int xC,int yC,double dist[]);
    
    
    int main () {
    
    
       //DICHIARAZIONE VARIABILI
    
    
       int dim=30;              //DIMENSIONE SCACCHIERA - PUO' ESSERE MODIFICATO
       int numOggetti=50;       //NUMERO MASSIMO DI OGGETTI - PUO' ESSERE MODIFICATO
       int scacchiera[dim][dim];//MATRICE CON UNA DIMENSIONE PRECEDENTEMENTE DEFINITA
       int i;                   //INDICE RIGA
       int j;                   //INDICE COLONNA
       double dist[numOggetti];  //VARIABILE PER LA DISTANZA DEGLI OGGETTI DAL CENTROIDE
       float maxdist=0;         //VARIABILE CONTENENTE LA DISTANZA MASSIMA
       int imax,jmax;           //INDICI PER LA POSIZIONE DELL'OGGETTO CON DISTANZA MASSIMA
       float mindist=dim;       //VARIBILE CONTENENTE LA DISTANZA MINIMA
       int imin,jmin;           //INDICI PER LA POSIZIONE DELL'OGGETTO CON DISTANZA MINIMA
       int cont=0;                //CONTA IL NUMERO DI OGGETTI
       int maxOggetti=numOggetti; //VARIABILE USATA PER IL RIEMPIMENTO DELLA MATRICE
       int xC=0;                //ORDINATA DEL CENTROIDE
       int yC=0;                //ASCISSA DEL CENTROIDE
       char onBox='X';          //CASELLA OCCUPATA - PUO' ESSERE MODIFICATO
       char offBox=' ';         //CASELLA LIBERA - PUO' ESSERE MODIFICATO
       char centroide='C';      //CENTROIDE - PUO' ESSERE MODIFICATO
       float call;
       srand(rand()+clock()+time(NULL)); //FUNZIONE PER LA GENERAZIONE DI OGGETTI CASUALI NELLA SCACCHIERA CON
    
    
       //RIEMPIMENTO SCACCHIERA
    
    
       for(i=0;i<dim;i++)
           for(j=0;j<dim;j++)
               scacchiera[i][j]=0;
       while(maxOggetti>0)
           {
           for(i=0;i<dim;i++)
               for(j=0;j<dim;j++)
                   if((scacchiera[i][j]!=1) && (maxOggetti>0) && (rand()%1000==0))
                   {
                           scacchiera[i][j]=1;
                           maxOggetti=maxOggetti-1;
                   }
           }
    
    
       //CALCOLO IL CENTROIDE
    
    
       for(i=0;i<dim;i++)
           for(j=0;j<dim;j++)
               if(scacchiera[i][j])
                   {
                   xC+=j;
                   yC+=i;
                   }
       xC=xC/numOggetti;
       yC=yC/numOggetti;
    
    
       //VISUALIZZAZIONE DELLA SCACCHIERA SENZA IL CENTROIDE
    
    
       printf("  Scacchiera senza il centroide\n");
    
    
       printf("%c",201);         //-------------------------
       for(i=0;i<dim;i++)       //                        -
            printf("%c",205);     //DISEGNA BORDO SUPERIORE -
            printf("%c",187);         //                        -
            printf("\n");             //-------------------------
       for(i=0;i<dim;i++)
           {
           printf("%c",186);     //DISEGNA BORDO LATERALE SINISTRO
           for(j=0;j<dim;j++)
           {
    
    
                   if(scacchiera[i][j])
                       printf("%c",onBox);
                   else
                       printf("%c",offBox);
            }
           printf("%c",186);     //DISEGNA BORDO LATERALE DESTRO
           printf("\n");
        }
       printf("%c",200);         //-------------------------
       for (i=0;i<dim;i++)  //                        -
           printf("%c",205);     //DISEGNA BORDO INFERIORE -
           printf("%c",188);         //                        -
           printf("\n");             //-------------------------
    
    
       //VISUALIZZAZIONE DELLA SCACCHIERA CON IL CENTROIDE
    
    
       printf("\n  Scacchiera con il centroide\n");
    
    
       printf("%c",201);         //-------------------------
       for(i=0;i<dim;i++)       //                        -
            printf("%c",205);     //DISEGNA BORDO SUPERIORE -
            printf("%c",187);         //                        -
            printf("\n");             //-------------------------
       for(i=0;i<dim;i++)
           {
           printf("%c",186);     //DISEGNA BORDO LATERALE SINISTRO
           for(j=0;j<dim;j++)
           {
               if((j==xC) && (i==yC))
                   printf("%c",centroide);
               else {
                   if(scacchiera[i][j])
                       printf("%c",onBox);
                   else
                       printf("%c",offBox);
                    }
           }
           printf("%c",186);     //DISEGNA BORDO LATERALE DESTRO
           printf("\n");
       }
       printf("%c",200);         //-------------------------
       for (i=0;i<dim;i++)  //                        -
           printf("%c",205);     //DISEGNA BORDO INFERIORE -
           printf("%c",188);         //                        -
           printf("\n");             //-------------------------
    
    
       //VISUALIZZAZIONE DISTANZE
    
    
        distanze(dim,scacchiera,xC,yC,dist);
    
    
        for(i=0;i<numOggetti;i++)
        {
    
    
           for(j=0;j<numOggetti;j++)
           {
    
    
            if(dist[i]>maxdist)
                {
                        maxdist=dist[i];
                        imax=i; jmax=j;
                }
            else if(dist[i]<mindist)
                {
                        mindist=dist[i];
                        imin=i; jmin=j;
                }
            }
        }
                printf("\n\nDistanza massima/minima : %.2f[posizione %d,%d]/%.2f[posizione %d,%d]\n",maxdist,imax,jmax,mindist,imin,jmin);
    }
    
    
     void distanze(int dim,int scacchiera[dim][dim],int xC,int yC,double dist[])
    {
        int cont=0;
        int i,j;
        //VISUALIZZAZIONE DISTANZE
        for(i=0;i<dim;i++)
        {
            for(j=0;j<dim;j++)
            {
                if(scacchiera[i][j])
                {
                    dist[cont]=sqrt(pow((xC-i),2)+pow((yC-j),2)); //FORMULA DISTANZA DAL CENTROIDE
                    cont++;
    
    
                    //printf("\nOggetto n%d di posizione %d,%d distanza : %lf",cont,i,j,dist[cont]);
                    printf("Oggetto N%c %d di posizione %d,%d distanza = %.2lf\n",248,cont,i,j,dist[cont-1]);
                }
            }
        }
        return;
    }

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Cosa fai? Cosa succede?

    Metti il main in un file .c tutte le funzioni in un altro file .c e le dichiarazioni delle funzioni in un .h che includerai nel file dove c'� il main
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    L'ho fatto ma non va ! Ho messo il main in un file main.c poi ho aggiunto un file che ho chiamato header.h dove ci ho messo la dichiarazione dei prototipi, e la funzione distanza in un altro file chiamato distanza.c... Help me... x(
    L'ho suddiviso così : questo è il main.c
    codice:
    int main () {
    
       //DICHIARAZIONE VARIABILI
    
    
       int dim=30;              //DIMENSIONE SCACCHIERA - PUO' ESSERE MODIFICATO
       int numOggetti=50;       //NUMERO MASSIMO DI OGGETTI - PUO' ESSERE MODIFICATO
       int scacchiera[dim][dim];//MATRICE CON UNA DIMENSIONE PRECEDENTEMENTE DEFINITA
       int i;                   //INDICE RIGA
       int j;                   //INDICE COLONNA
       double dist[numOggetti];  //VARIABILE PER LA DISTANZA DEGLI OGGETTI DAL CENTROIDE
       float maxdist=0;         //VARIABILE CONTENENTE LA DISTANZA MASSIMA
       int imax,jmax;           //INDICI PER LA POSIZIONE DELL'OGGETTO CON DISTANZA MASSIMA
       float mindist=dim;       //VARIBILE CONTENENTE LA DISTANZA MINIMA
       int imin,jmin;           //INDICI PER LA POSIZIONE DELL'OGGETTO CON DISTANZA MINIMA
       int cont=0;                //CONTA IL NUMERO DI OGGETTI
       int maxOggetti=numOggetti; //VARIABILE USATA PER IL RIEMPIMENTO DELLA MATRICE
       int xC=0;                //ORDINATA DEL CENTROIDE
       int yC=0;                //ASCISSA DEL CENTROIDE
       char onBox='X';          //CASELLA OCCUPATA - PUO' ESSERE MODIFICATO
       char offBox=' ';         //CASELLA LIBERA - PUO' ESSERE MODIFICATO
       char centroide='C';      //CENTROIDE - PUO' ESSERE MODIFICATO
       float call;
       srand(rand()+clock()+time(NULL)); //FUNZIONE PER LA GENERAZIONE DI OGGETTI CASUALI NELLA SCACCHIERA CON
    
    
       //RIEMPIMENTO SCACCHIERA
    
    
       for(i=0;i<dim;i++)
           for(j=0;j<dim;j++)
               scacchiera[i][j]=0;
       while(maxOggetti>0)
           {
           for(i=0;i<dim;i++)
               for(j=0;j<dim;j++)
                   if((scacchiera[i][j]!=1) && (maxOggetti>0) && (rand()%1000==0))
                   {
                           scacchiera[i][j]=1;
                           maxOggetti=maxOggetti-1;
                   }
           }
    
    
       //CALCOLO IL CENTROIDE
    
    
       for(i=0;i<dim;i++)
           for(j=0;j<dim;j++)
               if(scacchiera[i][j])
                   {
                   xC+=j;
                   yC+=i;
                   }
       xC=xC/numOggetti;
       yC=yC/numOggetti;
    
    
       //VISUALIZZAZIONE DELLA SCACCHIERA SENZA IL CENTROIDE
    
    
       printf("  Scacchiera senza il centroide\n");
    
    
       printf("%c",201);         //-------------------------
       for(i=0;i<dim;i++)       //                        -
            printf("%c",205);     //DISEGNA BORDO SUPERIORE -
            printf("%c",187);         //                        -
            printf("\n");             //-------------------------
       for(i=0;i<dim;i++)
           {
           printf("%c",186);     //DISEGNA BORDO LATERALE SINISTRO
           for(j=0;j<dim;j++)
           {
    
    
                   if(scacchiera[i][j])
                       printf("%c",onBox);
                   else
                       printf("%c",offBox);
            }
           printf("%c",186);     //DISEGNA BORDO LATERALE DESTRO
           printf("\n");
        }
       printf("%c",200);         //-------------------------
       for (i=0;i<dim;i++)  //                        -
           printf("%c",205);     //DISEGNA BORDO INFERIORE -
           printf("%c",188);         //                        -
           printf("\n");             //-------------------------
    
    
       //VISUALIZZAZIONE DELLA SCACCHIERA CON IL CENTROIDE
    
    
       printf("\n  Scacchiera con il centroide\n");
    
    
       printf("%c",201);         //-------------------------
       for(i=0;i<dim;i++)       //                        -
            printf("%c",205);     //DISEGNA BORDO SUPERIORE -
            printf("%c",187);         //                        -
            printf("\n");             //-------------------------
       for(i=0;i<dim;i++)
           {
           printf("%c",186);     //DISEGNA BORDO LATERALE SINISTRO
           for(j=0;j<dim;j++)
           {
               if((j==xC) && (i==yC))
                   printf("%c",centroide);
               else {
                   if(scacchiera[i][j])
                       printf("%c",onBox);
                   else
                       printf("%c",offBox);
                    }
           }
           printf("%c",186);     //DISEGNA BORDO LATERALE DESTRO
           printf("\n");
       }
       printf("%c",200);         //-------------------------
       for (i=0;i<dim;i++)  //                        -
           printf("%c",205);     //DISEGNA BORDO INFERIORE -
           printf("%c",188);         //                        -
           printf("\n");             //-------------------------
    
    
       //VISUALIZZAZIONE DISTANZE
    
    
        distanze(dim,scacchiera,xC,yC,dist);
    
    
        for(i=0;i<numOggetti;i++)
        {
    
    
           for(j=0;j<numOggetti;j++)
           {
    
    
            if(dist[i]>maxdist)
                {
                        maxdist=dist[i];
                        imax=i; jmax=j;
                }
            else if(dist[i]<mindist)
                {
                        mindist=dist[i];
                        imin=i; jmin=j;
                }
            }
        }
                printf("\n\nDistanza massima/minima : %.2f[posizione %d,%d]/%.2f[posizione %d,%d]\n",maxdist,imax,jmax,mindist,imin,jmin);
    }

    Questo invece la function:
    codice:
    void distanze(int dim,int scacchiera[dim][dim],int xC,int yC,double dist[]){
        int cont=0;
        int i,j;
        //VISUALIZZAZIONE DISTANZE
        for(i=0;i<dim;i++)
        {
            for(j=0;j<dim;j++)
            {
                if(scacchiera[i][j])
                {
                    dist[cont]=sqrt(pow((xC-i),2)+pow((yC-j),2)); //FORMULA DISTANZA DAL CENTROIDE
                    cont++;
    
    
                    //printf("\nOggetto n%d di posizione %d,%d distanza : %lf",cont,i,j,dist[cont]);
                    printf("Oggetto N%c %d di posizione %d,%d distanza = %.2lf\n",248,cont,i,j,dist[cont-1]);
                }
            }
        }
        return 0;
    }
    e infine l'header :

    codice:
    #ifndef HEADER_H_INCLUDED#define HEADER_H_INCLUDED
    #include <math.h>   //LIBRERIA CONTENENTE LA FUNZIONE POW
    #include <stdio.h>  //LIBRERIA CONTENETE LE FUNZIONI PRINTF/SCANF
    #include <stdlib.h> //LIBRERIA CONTENETE LA FUNZIONE RAND
    #include <time.h>   //CONTIENE LA FUNZIONE CLOCK
    void distanze(int dim,int scacchiera[dim][dim],int xC,int yC,double dist[]);
    
    
    
    
    #endif // HEADER_H_INCLUDED
    Mi da errore sulla srand nel main ...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi indicare esattamente quale errore hai e come hai compilato i 3 file?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.