2005 – 6

Data la seguente funzione che inizializza i valori di un array bi-dimensionale “matrice”:

#define N 5

void inizializza()
{
   int matrice[N][N];
   int riga, colonna;
   for(riga=0; riga < N; riga++)
   {
       for(colonna=0; colonna < N; colonna++)
       {
          if(riga == colonna) 
             matrice[riga][colonna]=1;
          else if(riga+colonna == N-1) 
             matrice[riga][colonna]=1;
          else if(riga < colonna)
             matrice[riga][colonna]=0;
          else
             matrice[riga][colonna]=matrice[colonna][riga];
       }
   }
   for(riga=0; riga < N; riga++) 
   {
      for(colonna=0; colonna < N; colonna++) 
         printf("%d ", matrice[riga][colonna]);
      printf("\n");
   }
}

Indicare quale tra le seguenti configurazioni vengono stampate dalla procedura "inizializza".

Risposte:

  1. 1 1 1 1 1
    0 1 0 0 0
    0 0 1 0 0
    0 0 0 1 0
    1 1 1 1 1
  2. 1 0 0 0 1
    0 1 0 1 0
    0 0 1 0 0
    0 1 0 1 0
    1 0 0 0 1
  3. 1 0 0 0 0
    0 1 0 0 0
    0 0 1 0 0
    0 1 0 0 0
    1 0 0 0 0
  4. 1 0 0 0 0
    0 1 0 0 0
    0 0 1 0 0
    0 0 0 1 0
    0 0 0 0 1

Soluzione: b.


Il primo doppio for() compila la tabella

  • matrice[r, c] <-- 1, per r=c, diagonale principale
  • matrice[r, c] <-- 1, per r+c=4, diagonale secondaria
  • matrice[r, c] <-- 0, altrimenti

Il secondo doppio for() la visualizza.