<-- Torna alla lista delle soluzioni
Esercitazione 6
Esercizio 1
/* Implementare la procedura void mossa_giocatore(char matrice[3][3]) che chiede all’utente di inserire le coordinate (interi da 0 a 2) corrispondenti alla mossa scelta. La procedura deve controllare che la casella scelta sia libera (ovvero che contenga uno spazio) e, solo in questo caso, inserirvi il carattere ‘X’. L’uso dell’aritmetica dei puntatori e’ facoltativo. */
void mossa_giocatore(char matrice[3][3]) {
int r;
int c;
do {
do {
printf("Inserire la riga: ");
scanf("%d", &r);
} while(r < 0 || r > 2);
do {
printf("Inserire la colonna: ");
scanf("%d", &c);
} while(c < 0 || c > 2);
} while (matrice[r][c] != ' ');
matrice[r][c] = 'X';
return;
}
Esercizio 2
/* Implementare la procedura void mossa_computer(char matrice[3][3]) che scorra gli elementi della matrice e appena trovi una casella libera, vi inserisca il carattere ‘O’. Se la scacchiera è completa, nessun simbolo sara’ inserito. L’uso dell’aritmetica dei puntatori e’ facoltativo. */
void mossa_computer(char matrice[3][3]) {
int i;
int j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if(matrice[i][j] == ' ') {
matrice[i][j] = 'O';
return;
}
}
}
}
Esercizio 3
/* Implementare la funzione char verifica(char matrice[3][3]) che controlli se c’è un vincitore. In particolare, la funzione deve scorrere le righe, poi le colonne e poi le diagonali della scacchiera. Appena si incontrano tre simboli uguali, allineati e diversi da ‘ ‘ (spazio), la funzione deve restituire il carattere corrispondente al vincitore. Se non c’è ancora alcun vincitore, la funzione deve restituire il carattere ' ' (spazio). L’uso dell’aritmetica dei puntatori e’ facoltativo. */
char verifica(char matrice[3][3]) {
int i;
// VINCITORE SULLE RIGHE
for (i = 0; i < 3; i++) {
if (matrice[i][0] == matrice[i][1] && matrice[i][0] == matrice[i][2] && matrice[i][0] != ' ')
return matrice[i][0];
}
// VINCITORE SULLE COLONNE
for (i = 0; i < 3; i++) {
if (matrice[0][i] == matrice[1][i] && matrice[0][i] == matrice[2][i] && matrice[0][i] != ' ')
return matrice[0][i];
}
// VINCITORE SULLE DIAGONALI
if (matrice[0][0] == matrice[1][1] && matrice[0][0] == matrice[2][2] && matrice[0][0] != ' ')
return matrice[0][0];
if (matrice[0][2] == matrice[1][1] && matrice[0][2] == matrice[2][0] && matrice[0][2] != ' ')
return matrice[0][2];
// ANCORA NESSUN VINCITORE
return ' ';
}
