Il 0% ha trovato utile questo documento (0 voti)
16 visualizzazioni4 pagine

Esame

Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
16 visualizzazioni4 pagine

Esame

Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 4

Esame di Federico Ceccarino N35430066 19/09/22

PROGRAMMA

#include <stdio.h>

#include <iostream>

#include <cstdlib>

#include <cstring>

#include <math.h>

#include <string.h>

int main (){

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

//Andiamo a sfruttare le matrici per creare una scacchiera di 8 per 8 caselle

int matrice[7][7]; //andiamo a inserire il valore 7 dato che anche lo 0 viene

//contato come posizione negli array

//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

//Si suppone che il programma si riferisca al movimento della regina bianca

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

//e' formata da numeri da 0 a 7

matrice[a][b]=2; //utilizziamo il numero 2 per indicare la posizione della regina bianca


printf("Dove si trovano i pezzi bianchi? Inserisci la riga e la colonna e poi premi invio \n");

printf("Una volta inserito tutte le posizioni digitare 10 10 e poi premere invio \n");

while((i!=9)&&(j!=9))

//Sfruttiamo il While, dando la possibilità all'utente di terminare quando vuole

{scanf("%d""%d",&i,&j);

i=i-1;j=j-1;

matrice[i][j]=4;}//utilizziamo il numero 4 per indicare la posizione dei pezzi bianchi

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;

matrice[i][j]=3;}//utilizziamo il numero 3 per indicare la posizione dei pezzi neri

//Andiamo adesso a far visualizzare all'utente la configurazione della scacchiera

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");

printf("\nATTENZIONE\nI movimenti ammessi sono quello verticale, orizzontale e diagonale\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

int terminatore=0;//Inizializzo questa variabile a 0 per sfruttare al meglio il Do While

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

else printf("\nErrore, numeri inseriti non validi, riprovare\n");

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

//andiamo a gestire i vari possibili casi che si possono presentare

int e=a+c,f=b+d;//raggruppo con delle variabili le nuove posizioni

if(matrice[e][f]==0)

{matrice[e][f]=2;matrice[a][b]=0;

printf("\nLa Regina è stata spostata nella posizione riga:%d e colonna:%d \n",e+1,f+1);}

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

//Antecedente lungo la sua direzione

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

//immediatamente precedente seguendo la direzione di spostamento

printf("\nOra la scacchiera si presenta cosi': \n\n");

for(i=0;i<=7;i++)

{for(j=0;j<=7;j++)

{printf("%d ",matrice[i][j]);};

printf("\n");}

printf("\n");

system("PAUSE"); // comando di attesa

return 0;} // valore di ritorno del programma}

Potrebbero piacerti anche