Ricerca appunti sul web

Ricerca personalizzata

venerdì 27 febbraio 2009

Sorgenti c : Scacchi

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;
}
}
}

0 commenti: