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: