Ritorna alla pagina del corso.
Questa pagina contiene gli esercizi proposti in laboratorio e -alcune- delle soluzioni proposte.
Si suggerisce di provare a risolvere gli esercizi e solo in un secondo tempo di confrontare quanto fatto con le soluzioni proposte.
01: /*
02: 7. usi un array per memorizzare le caselle di una scacchiera 8x8, lo
03: inizializzi usando uno o piú cicli mettendo 'N' per le caselle nere e
04: 'B' per quelle chiare e successivamente lo stampi:
05: */
06:
07: #include<stdio.h>
08: #include<stdlib.h>
09:
10: #define MSIZE (8)
11:
12: int main(int argc, char **argv){
13:
14: char sc[MSIZE][MSIZE];
15:
16: for(int r = 0; r < MSIZE; ++r)
17: for(int c = 0; c < MSIZE; ++c)
18: {
19: // primo approccio, per le righe pari se colonne dispari faccio una cosa o l'altra
20: // e l'inverso per le righe dispari
21: if(r%2)
22: {
23: if(c%2)
24: sc[r][c] = 'N';
25: else
26: sc[r][c] = 'B';
27: }
28: else
29: {
30: if(c%2)
31: sc[r][c] = 'B';
32: else
33: sc[r][c] = 'N';
34: }
35:
36:
37: // secondo approccio, mi basta discriminare guardando se la somma degli indici e' pari o dispari
38: if((r + c) % 2)
39: sc[r][c] = 'B';
40: else
41: sc[r][c] = 'N';
42:
43: // terzo approccio, come il precedente ma scritto in maniera piu' compatta grazie
44: // all'operatore ternario '?'
45: sc[r][c] = ( ((r + c) % 2) ? 'B' : 'N');
46:
47: //CAVEAT: i 3 approcci sovrascrivono uno quanto fatto dal precedente, per
48: // vedere che effettivamente portano tutti allo stesso risultato
49: // eliminate il codice o rahhiudetelo tra /* e */
50: }
51:
52: // stampa della matrice
53: for(int r = 0; r < MSIZE; ++r)
54: {
55: for(int c = 0; c < MSIZE; ++c)
56: {
57: printf("%c", sc[r][c]);
58: }
59: printf("\n");
60: }
61:
62: return 0;
63: }
64:
65: