Algoritmo scacchiera 30x30

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Algoritmo scacchiera 30x30

    @ultrasound ... ma tu utilizzi DevC++/mingw ?
  • Re: Algoritmo scacchiera 30x30

    E' mingw che è C99 compliant altrimenti cose come questa
    
    int dim = 50; 
    int scacchiera[dim][dim];
    
    non potresti scriverle con un compilatore C/C++.
  • Re: Algoritmo scacchiera 30x30

    Come ho detto usando l'algoritmo prima postato le modifiche sono irrisorie.
    Questa è una possibile soluzione,ovviamente non ottimizzata in niente per lasciare lucida la comrensione dell'algoritmo,sopratutto su di un forum.
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>
    
    #define MAPPA_SIZE 30
    #define NUMERI 50
    
    int main()
    {
        //init seme
        srand((unsigned)time(NULL));
    
        //creo ed azzero mappa
        char mappa[MAPPA_SIZE][MAPPA_SIZE];
    
        int iy,ix;
        for (iy = 0; iy < MAPPA_SIZE ; iy++)
            for (ix = 0; ix < MAPPA_SIZE ; ix++)
                mappa[iy][ix] = ' ';
    
        //setto valori casuali e calcolo centroide
        int cx,cy;
        int i;
        for (i = 0 ,cx = 0, cy = 0 ; i < NUMERI ; i++)
        {
            do
            {
                iy = rand() % MAPPA_SIZE;
                ix = rand() % MAPPA_SIZE;
            }while (mappa[iy][ix] == 'X');
            mappa[iy][ix] = 'X';
            cx += ix;
            cy += iy;
        }
        cx /= NUMERI;
        cy /= NUMERI;
    
        //disegno mappa
        //linea alta
        printf("+");
        for (i = 0; i < MAPPA_SIZE ; i++)
            printf("-");
        printf("+\n");
    
        //mappa
        for (iy = 0; iy < MAPPA_SIZE ; iy++)
        {
            printf("|");
            for (ix = 0; ix < MAPPA_SIZE ; ix++)
                printf("%c",( (ix == cx) && ( iy == cy) ) ? 'C' : mappa[iy][ix]);
            printf("|\n");
        }
    
    
        //linea bassa
        printf("+");
        for (i = 0; i < MAPPA_SIZE ; i++)
            printf("-");
        printf("+\n");
    
        //calcolo e visualizzo distanze
        double maxd = 0.0;
        double mind = 999999.9;
        double dist = 0.0;
        int memy[2],memx[2];
    
        for (iy = 0; iy < MAPPA_SIZE ; iy++)
        {
            for (ix = 0; ix < MAPPA_SIZE ; ix++)
            {
                if (mappa[iy][ix] == ' ') continue;
                dist = sqrt( (double)(ix * ix + iy * iy));
                if ( maxd < dist )
                {
                    maxd = dist;
                    memy[0] = iy;
                    memx[0] = ix;
                }
                if ( mind > dist )
                {
                    mind = dist;
                    memy[1] = iy;
                    memx[1] = ix;
                }
                printf("mappa[%2d][%2d] -> %lf\n",iy,ix,dist);
            }
        }
    
        puts("\nAssoluto:");
        printf("mappa[%2d][%2d] > %lf\n",memy[0],memx[0],maxd);
        printf("mappa[%2d][%2d] < %lf\n",memy[1],memx[1],mind);
    
        return 0;
    }
    
  • Re: Algoritmo scacchiera 30x30

    E' mingw che è C99 compliant altrimenti cose come questa
    No nemmeno c++11 devi dirglielo esplicitamente che vuoi compilare per i suddetti standard,altrimenti pena di warning!
  • Re: Algoritmo scacchiera 30x30

    ultrasound91 ha scritto:


    oregon ha scritto:


    E' mingw che è C99 compliant altrimenti cose come questa
    
    int dim = 50; 
    int scacchiera[dim][dim];
    
    non potresti scriverle con un compilatore C/C++.
    ho verificato, è C99
    Ecco ... quindi è una soluzione limitata a quello standard ...
Devi accedere o registrarti per scrivere nel forum
19 risposte