Corso di Programmazione - Prova Pratica - Settimo Appello - 20 settembre 2001 - prova 801


L'esame di oggi ha a che fare con una partita di scacchi.

Il tipo enumerazione Colore rappresenta i 2 colori delle pedine degli scacchi (bianco e nero), ed il tipo enumerazione Personaggio rappresenta i diversi tipi di pedina (re, regina, alfiere, cavallo, torre e pedone).

Il tipo record Pedina rappresenta una pedina degli scacchi, con due campi: colore e personaggio, di tipo Colore e Personaggio, rispettivamente.

Il tipo record Casella rappresenta una casella della scacchiera, ed è un record di due campi: colore (il colore della casella, di tipo Colore) e pezzo, un riferimento ad una variabile di tipo Pedina. Il riferimento sarà NULL se la casella non contiene nessuna pedina, altrimenti conterrà l’indirizzo di una variabile di tipo Pedina.

Gli elementi del tipo Scacchiera sono tabelle bidimensionali di dimensione 8 per 8 aventi come di tipo base il tipo Casella. Un valore di tipo Scacchiera rappresenta una possibile configurazione della scacchiera.


	
	typedef enum Colore {bianco, nero} Colore;
typedef enum Personaggio {re, regina, alfiere, cavallo, torre, pedone} Personaggio;
typedef struct {Colore colore; Personaggio personaggio;} Pedina;
typedef struct {Colore colore;
Pedina *pezzo;} Casella;
typedef Casella Scacchiera[8][8];
 

Implementare le seguenti procedure:

  1. Scacchiera* Inizializza();

    La funzione Inizializza() alloca nello heap una nuova scacchiera, e ne restituisce l'indirizzo. Tale scacchiera non deve contenere nessuna pedina, e le celle devono essere colorate in modo opportuno (la cella di coordinate [0,0] deve essere bianca, quella di coordinate [0,1] nera, eccetera).



  2. int CercaAlfiereBianco(Scacchiera s);

    La funzione, prendendo come parametro attuale un valore s di tipo Scacchiera verifica se l'alfiere bianco è presente nella scacchiera s. La funzione restituisce 1 se l'alfiere bianco è presente, altrimenti restituisce 0.


  3. void Stampa(Scacchiera s);

    La chiamata di questa funzione produce una rappresentazione sullo standard output dello stato della scacchiera passata come parametro attuale (in ogni casella quali pezzi ci sono e di che colore).


  4. int ContaPezzi(Scacchiera s, Colore colore);

    La funzione ContaPezzi(s,c) restituisce il numero di pezzi di colore c presenti nella scacchiera s.

Per consegnare la prova, inviare una e-mail a cortesi@dsi.unive.it con subject: 801 - cognome - matricola. Il codice corrispondente alle procedure realizzate deve essere inserito nel corpo del messaggio (non in attachment).