2008/09 – Fase scolastica – 04

Si consideri il seguente frammento di codice:

Const
   DMAX = 5;
Type
   TMAT = Array[1..DMAX,1..DMAX] Of Integer;
Var
   M: TMAT;
   i: Integer;
Procedure esegui(Var M: TMAT; C, R1, R2: Integer);
Var
   i: Integer;
Begin
   For i:=1 To C Do
      M[R1,i]:=M[R1,i]+M[R2,i];
End;
Begin
   For i:=1 To 2 Do
      esegui(M, 5, i, 4);
End.

La matrice M inizialmente contiene tutti 1 nella prima riga, tutti 2 nella seconda riga e cosi via.

Indicare il contenuto della matrice M al termine del programma.

Risposte:

  1. 5 5 5 5 5
    6 6 6 6 6
    3 3 3 3 3
    4 4 4 4 4
    5 5 5 5 5
  2. 1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
  3. 5 5 5 5 5
    4 4 4 4 4
    3 3 3 3 3
    2 2 2 2 2
    1 1 1 1 1
  4. 1 1 1 1 1
    2 2 2 2 2
    3 3 3 3 3
    4 4 4 4 4
    5 5 5 5 5

Soluzione: a.


Soluzione

Osserviamo inizialmente che il ciclo contenuto nel programma principale è eseguito due sole volte.

Inoltre possiamo facilmente verificare che la procedura esegui somma agli elementi della riga i della matrice gli elementi della quarta riga della matrice stessa.