Cosa stampa il seguente programma?
Program Test(Input, Output); Type vett = Array[0..9] Of Integer; Var i, f, a, b: Integer; arr : vett; Function funzione1(arr: vett): Integer; Var i: Integer; Begin i:=1; While(arr[i] <> -1) Do i:=i*2; funzione1:=i; End; Function funzione2(arr: vett; f: Integer; k: Integer): Integer; Var i, m, temp: Integer; Begin i:=0; m:=0; temp:=-1; While(i <= f) Do Begin m:=(i+f) Div 2; If(arr[m] = k) Then temp:=m; If((arr[m] = -1) Or (arr[m] > k)) Then f:=m-1 Else i:=m+1; End; funzione2:= temp; End; Begin For i:=0 To 9 Do arr[i] := -1; arr[0]:=1; arr[1]:=2; arr[2]:=4; arr[3]:=8; f:=funzione1(arr); a:=funzione2(arr, f, 4); b:=funzione2(arr, f, 7); Writeln("a=", a, ",b=", b); End.
Risposte:
- a=2, b=4
- a=2, b=-1
- a=-1, b=4
- a=-1, b=-1.