Scrivere un programma che, dato un pezzo degli scacchi,
riempia una matrice (scacchiera) con dei numeri interi. 
 
#include <stdio.h>
#define N 8
void torre(int matrice[][N]);
void alfiere(int matrice[][N]);
void regina(int matrice[][N]);
void cavallo(int matrice[][N]);
int main()
{
    int num;
    int i=0;
    int j=0;
    int matrice[N][N];
    for(i=0; i<N; i++)
        for (j=0; j<N; j++)
                matrice[i][j]=0;
                
    scanf("%d",&num);
    if (num == 1)
    torre(matrice);
    if (num == 2)
    alfiere(matrice);
    if(num == 3)
    cavallo(matrice);
    if(num == 4)
    regina(matrice);
    for(i=0; i<N; i++)
    {
        for (j=0; j<N; j++)
        {
            printf("%d ",matrice[i][j]);
        }
            printf("n");
    }
}
void torre(int matrice[][N])
{
    int i=0;
    int j=0;
    int x=0;
    int y=0;
    int a=0;
    int b=0;
    int riga=0;
    int colonna=0;
    int matrice2[N][N];
    for(a=0; a<N; a++)
        for(b=0; b<N; b++)
        matrice2[a][b] = 0;
        
        /*sommo riga da dx a sx*/
        for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(y<N)
                {
                if ( matrice2[x][y+1] == 0 && (y+1)<N)
                matrice[i][j] += 1;
                y++;
                }
                }
        }
        
        /*sommo riga da sx a dx*/
        for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(y>0)
                {
                if ( matrice2[x][y-1] == 0 && (y-1)>=0)
                matrice[i][j] += 1;
                y--;
                }
                }
        }
        
        /*sommo colonna dall'alto al basso*/
        for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(x<N)
                {
                if ( matrice2[x+1][y] == 0 && (x+1)<N)
                matrice[i][j] += 1;
                x++;
                }
                }
        }
        
        /* sommo colonna dal basso all'alto*/        
        for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(x>0)
                {
                if ( matrice2[x-1][y] == 0 && (x-1)>=0)
                matrice[i][j] += 1;
                x--;
                }
                }
        }   
}
void alfiere(int matrice[][N])
{
    int i=0;
    int j=0;
    int a=0;
    int b=0;
    int x=0;
    int y=0;
    int matrice2[N][N];
    for(a=0; a<N; a++)
        for(b=0; b<N; b++)
        matrice2[a][b] = 0;
        
        /*diagonale da sinistra a destra verso l'alto*/
        for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(x>0)
                {
                if ( matrice2[x-1][y+1] == 0 && (x-1)>=0 && (y+1)<N)
                matrice[i][j] += 1;
                x--;
                y++;
                }
                }
        }
        
        /* da sx a dx verso il basso*/
         for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(x<N)
                {
                if ( matrice2[x+1][y+1] == 0 && (x+1)<N && (y+1)<N)
                matrice[i][j] += 1;
                x++;
                y++;
                }
                }
        }
        
        /*da dx a sx verso l'alto*/
         for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(x>0)
                {
                if ( matrice2[x-1][y-1] == 0 && (x-1)>=0 && (y-1)>=0)
                matrice[i][j] += 1;
                x--;
                y--;
                }
                }
        }
        
        /*da dx a sx verso il basso*/
        for(i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                {
                x=i;
                y=j;
                while(x<N)
                {
                if ( matrice2[x+1][y-1] == 0 && (x+1)<N && (y-1)>=0)
                matrice[i][j] += 1;
                x++;
                y--;
                }
                }
        }
          
      
}
/* torre + alfiere */
void regina(int matrice[][N])
{
           alfiere(matrice);
           torre (matrice);
}
void cavallo(int matrice[][N])
{
int i=0;
int j=0;
int a=0;
int b=0;
int matrice2[N][N];
for(a=0; a<N; a++)
    for(b=0; b<N; b++)
    matrice2[a][b] = 0;
    
a=0;
b=0;
    for(i=0; i<N; i++, a++)
    {
    b=0;
        for (j=0; j<N; j++, b++)
        {
                if(matrice2[a+2][b+1] == 0 && (a+2)<N && (b+1)<N)
                matrice[i][j] += 1;
                if (matrice2[a+1][b+2] == 0 && (a+1)<N && (b+2)<N)
                matrice[i][j] += 1;
                if (matrice2[a-1][b-2] == 0 && (a-1)>=0 && (b-2)>=0)
                matrice[i][j] += 1;
                if (matrice2[a-2][b-1] == 0 && (a-2)>=0 && (b-1)>=0)
                matrice[i][j] += 1;
                if (matrice2[a-1][b+2] == 0 && (a-1)>=0 && (b+2)<N)
                matrice[i][j] += 1;
                if (matrice2[a+1][b-2] == 0 && (b-2)>=0 && (a+1)<N)
                matrice[i][j] += 1;
                if (matrice2[a+2][b-1] == 0 && (b-1)>=0 && (a+2)<N)
                matrice[i][j] += 1;
                if (matrice2[a-2][b+1] == 0 && (a-2)>=0 && (b+1)<N)
                matrice[i][j] += 1;
        }
   }
} 
Ricerca appunti sul web
 
  
    Ricerca personalizzata
  
venerdì 27 febbraio 2009
Sorgenti c : Scacchi
Pubblicato da
Baiox
alle
10:36
        
 
 
Etichette: Programmazione C
Iscriviti a:
Commenti sul post (Atom)
0 commenti:
Posta un commento