Ricerca appunti sul web

Ricerca personalizzata

venerdì 27 febbraio 2009

Sorgenti c : Scacchi 2

Scrivere un programma che presa in input una casella
della scacchiera, sia essa C, riempia tale scacchiera con dei numeri interi.


La casella deve contenere il valore 1 se, posizionando una regina in C, tale
casella `e raggiungibile dalla regina.
- La casella deve contenere il valore 2 se la casella `e C, cio`e se `e la stessa casella
definita in input che contiene la regina.
- La casella deve contenere il valore 0 se, posizionando una regina in C, tale
casella non `e raggiungibile dalla regina e non `e C (non `e la casella che contiene
la regina).

#include<stdio.h>
#define N 8
void regina(int [][N], int, int);

int main()
{
int i=0;
int j=0;
int riga=0;
int colonna=0;

int matrice[N][N];
for(i=0; i<N; i++)
for(j=0; j<N; j++)
matrice[i][j] = 0;

scanf("%d",&riga);
scanf("%d",&colonna);
regina(matrice,riga,colonna);

for(i=0; i<N; i++)
{
for (j=0; j<N; j++)
{
printf("%d ",matrice[i][j]);
}
printf("n");
}
}

void regina (int matrice[][N], int riga,int colonna)
{

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;

x=riga;
y=colonna;


/* alfiereeeee*/

while(x>0)
{
if ( matrice2[x-1][y+1] == 0 && (x-1)>=0 && (y+1)<N)
matrice[x-1][y+1] = 1;
x--;
y++;
}

x=riga;
y=colonna;

while(x<N)
{
if ( matrice2[x+1][y+1] == 0 && (x+1)<N && (y+1)<N)
matrice[x+1][y+1] = 1;
x++;
y++;
}

x=riga;
y=colonna;

while(x>0)
{
if ( matrice2[x-1][y-1] == 0 && (x-1)>=0 && (y-1)>=0)
matrice[x-1][y-1] = 1;
x--;
y--;
}

x=riga;
y=colonna;

while(x<N)
{
if ( matrice2[x+1][y-1] == 0 && (x+1)<N && (y-1)>=0)
matrice[x+1][y-1] = 1;
x++;
y--;
}


/*torreeeee*/


for (j=colonna; j<N; j++)
{
x=riga;
y=j;
while(y<N)
{
if ( matrice2[x][y+1] == 0 && (y+1)<N)
matrice[x][y+1] = 1;
y++;
}
}

for (j=colonna; j<N; j++)
{
x=riga;
y=j;
while(y>0)
{
if ( matrice2[x][y-1] == 0 && (y-1)>=0)
matrice[x][y-1] = 1;
y--;
}
}

for (i=riga; i<N; i++)
{
y=colonna;
x=i;
while(x<N)
{
if ( matrice2[x+1][y] == 0 && (x+1)<N)
matrice[x+1][y] = 1;
x++;
}
}

for (i=riga; i>0; i--)
{
y=colonna;
x=i;
while(x>0)
{
if ( matrice2[x-1][y] == 0 && (x-1)>=0)
matrice[x-1][y] = 1;
x--;
}
}
/* metto 2 nella posizione iniziale della regina*/
matrice[riga][colonna] = 2;
}

0 commenti: