2010 – 5

Si consideri il seguente frammento di programma:

#define D 10

main()
{
   int M[D],i;
   for(i=0; i < D; i++)
      M[i]=9*i;
   printf("Sequenza=");
   for(i=0; i < D; i++)
      if(M[i]%(i+1) == 0)
         printf(" %2d",M[i]/(i+1));
      else
         printf(" %2d",M[i]%(i+1));
}

Cosa viene visualizzato a video dall'esecuzione di main()?


Soluzione: Sequenza:  0  1  6  3  1  3  5  7  8  1.


Il primo for() carica in M[] i multipli di 9

0 9 18 27 36 45 54 63 72 81

Il secondo for() scorre M[] e visualizza il quoziente oppure il resto della divisione a seconda che il valore sia o meno divisibile per la sua posizione (con indice a partire da 1...)

i M[i] Divisione
0  0    0/1  =0
1  9    9/2   1
2  18   18/3 =6
3  27   27/4  3
4  36   36/5  1
5  45   45/6  3
6  54   54/7  5
7  63   63/8 =7
8  72   72/9 =8
9  81   81/10 1