Programmazione ed
Esercitazioni di Programmazione


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


<-- Torna alla lista delle soluzioni