gygabyte017
09-11-2005, 15:52
Essendo uno studente, mi sono iscritto alle selezioni scolastiche delle olimpiadi di informatica. Ebbene, i quesiti su cui sto esercitandomi sono un pò difficili x me (anche se programmo da 4 anni) xkè sono analisi di funzioni che non ho capito come si fanno...
Esempio di esercizio:
--------------------------
La risposta vale 6 punti
Si consideri il seguente frammento di programma.
type sequenza = array[1..100] of integer;
function calcola(vett:sequenza; n:integer): integer;
var i,y,x:integer;
begin
y:=0;
x:=vett[1];
for i:=1 to n-1 do
begin
if (x < vett[i+1]) then
begin
y:=vett[i+1]-x+y;
x:=vett[i+1]
end;
if (x-y > vett[i+1]) then
y:=x-vett[i+1];
end;
calcola:=y;
end;
Dire che cosa restituisce la funzione "calcola" assumendo che venga invocata passando un vettore di lunghezza n con n>2.
Risposta aperta.
----------------------------
La domanda è: come li devo risolvere? Qual'è il metodo? Non posso mica seguire riga x riga come se fossi un pc!
:ciauz: :ciauz: :ciauz:
Esempio di esercizio:
--------------------------
La risposta vale 6 punti
Si consideri il seguente frammento di programma.
type sequenza = array[1..100] of integer;
function calcola(vett:sequenza; n:integer): integer;
var i,y,x:integer;
begin
y:=0;
x:=vett[1];
for i:=1 to n-1 do
begin
if (x < vett[i+1]) then
begin
y:=vett[i+1]-x+y;
x:=vett[i+1]
end;
if (x-y > vett[i+1]) then
y:=x-vett[i+1];
end;
calcola:=y;
end;
Dire che cosa restituisce la funzione "calcola" assumendo che venga invocata passando un vettore di lunghezza n con n>2.
Risposta aperta.
----------------------------
La domanda è: come li devo risolvere? Qual'è il metodo? Non posso mica seguire riga x riga come se fossi un pc!
:ciauz: :ciauz: :ciauz: