Esame
Esame
PROGRAMMA
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <math.h>
#include <string.h>
int i,j; //andiamo a creare due variabili di tipo intero che ci serviranno per gestire le posizioni sulla scacchiera
int a,b; //queste due variabili saranno utilizzate per tener traccia della posizione della regina bianca
//Adesso che abbiamo definito la matrice andiamo a definire la posizione dei pezzi sulla scacchiera
//Dato che non sappiamo quanti e quali pezzi ci sono, lasciamo che sia l'utente a definire la situazione
//Come prima cosa quindi inseriamo il numero 0 in ogni posizione della matrice, considereremo lo 0 come indice di casella
vuota
for(i=0;i<=7;i++)
{for(j=0;j<=7;j++)
{matrice[i][j]=0;};};
//utilizzo un doppio ciclo for per muovermi sia tra le righe che tra le colonne
printf("Benvenuto, prima di procedere inserisci i pezzi che sono presenti sulla scacchiera \n \n");
printf("Dove si trova la regina bianca? Inserisci la riga e la colonna e poi premi invio \n");
scanf("%d""%d",&a,&b);
a=a-1;b=b-1;//Sottraggo 1 ai due indici dato che l'utente inserira' numeri da 1 a 8 mentre la matrice
printf("Una volta inserito tutte le posizioni digitare 10 10 e poi premere invio \n");
while((i!=9)&&(j!=9))
{scanf("%d""%d",&i,&j);
i=i-1;j=j-1;
printf("Dove si trovano i pezzi neri? Inserisci la riga e la colonna e poi premi invio \n");
printf("Una volta inserito tutte le posizioni digitare 20 20 e poi premere invio \n");
while((i!=19)&&(j!=19))
{scanf("%d""%d",&i,&j);
i=i-1;j=j-1;
printf("Grazie per aver inserito i dati, la scacchiera da te definita si presenta cosi': \n");
printf("Legenda: 0=Casella vuota 2=Regina bianca 3=Pezzi neri 4=Pezzi bianchi \n \n");
for(i=0;i<=7;i++)
{for(j=0;j<=7;j++)
{printf("%d ",matrice[i][j]);};
printf("\n");}
//Adesso che abbiamo definito la condizione della scacchiera possiamo procedere a definire
//Il movimento della regina, ricordando che la sua posizione e' definita dalle variabili a e b
printf("\nRicordando che la posizione della regina bianca e' riga:%d e colonna:%d \n",a+1,b+1);
printf("Inserisci due numeri, questi andranno sommati alle coordinate attuali \n");
printf("Se si intende abbassare il numero di colonna o di riga anteporre il segno meno al numero inserito \n");
int c,d; //inseriamo queste due variabili per tener conto dei dati inseriti dall'utente
//Dobbiamo adesso assicurarci che i valori inseriti siano validi, implementiamo un sistema di controllo
do{
scanf("%d""%d",&c,&d);
if((c==0||d==0||c==d||c==-d)&&((a+c)<=7&&(a+c)>=0&&(b+d)<=7&&(b+d)>=0))
{printf("\nPerfetto\n");terminatore=1;}
while(terminatore==0);
//All'interno dell'if ho inserito tutte le condizioni che mi assicurano che i valori siano validi
//Una volta accertati che l'utente abbia inserito dei valori validi
if(matrice[e][f]==0)
{matrice[e][f]=2;matrice[a][b]=0;
if(matrice[e][f]==3)
{matrice[e][f]=2;matrice[a][b]=0;
printf("\nLa Regina è stata spostata nella posizione riga:%d e colonna:%d dove vi era un pezzo nero \n",e+1,f+1);}
//Ora dobbiamo occuparci del meccanismo per cui se la regina incontra un pezzo bianco si sposta nella posizione
if (matrice[e][f]==4)
{if((e==a)&&(f>b)){
while(matrice[e][f]==4){f--;}}
if((e==a)&&(f<b)){
while(matrice[e][f]==4){f++;}}
if((e>a)&&(f==b)){
while(matrice[e][f]==4){e--;}}
if((e<a)&&(f==b)){
while(matrice[e][f]==4){e++;}}
if((e>a)&&(f>b)){
while(matrice[e][f]==4){e--;f--;}}
if((e<a)&&(f>b)){
while(matrice[e][f]==4){e++;f--;}}
if((e>a)&&(f<b)){
while(matrice[e][f]==4){e--;f++;}}
if((e<a)&&(f<b)){
while(matrice[e][f]==4){e++;f++;}}
matrice[e][f]=2;matrice[a][b]=0;
printf("\nLa Regina ha incontrato un pezzo bianco lungo il persorso, la sua posizione ora e' riga:%d e colonna:%d \n",e+1,f+1);}
//Abbiamo valutato tutti i possibili casi e così facendo siamo sicuri che nel caso in cui dovessimo
//Spostare la Regina in una casella già occupata da un pezzo bianco questa si posizionerebbe nella casella
for(i=0;i<=7;i++)
{for(j=0;j<=7;j++)
{printf("%d ",matrice[i][j]);};
printf("\n");}
printf("\n");