2005/06 – Fase scolastica – 04

Cosa stampa il seguente programma?

Program cosa(Input, Output);
Type
   vett = Array[0..10] Of Integer;
Var
   a, b, i   : Integer;
   arr1, arr2: vett;

Function funzione(arr: vett; dim: Integer): Integer;
Var
   i, t: Integer;
Begin
   i:=0;
   t:=0;
   If((dim Mod 2) = 1) Then
      While(i < dim) Do
         Begin
             t:=arr[i];
             arr[i]:=arr[dim-i-1];
             arr[dim-i-1]:=t;
             i:=i+1;
         End
   Else
      While(i < (dim Div 2)) Do
         Begin
            t:=arr[i];
            arr[i]:=arr[dim-i-1];
            arr[dim-i-1]:=t;
            i:=i+1;
         End;
   funzione:=arr[0];
End;

Begin
   For i:=0 to  9 Do arr1[i]:=i+1;
   For i:=0 to 10 Do arr2[i]:=i+1;
   a:=funzione(arr1, 10);
   b:=funzione(arr2, 11);
   Writeln('a=', a, ',b=', b);
End.

Risposte:

  1. a=10, b=1
  2. a=1, b=1
  3. a=10, b=11#
  4. a=1, b=11.