Fişierul intrare/ieşire:apel.in, apel.outSursăONI 2007, clasa 10
AutorEmanuela CerchezAdăugată deDITzoneCAdrian Diaconu DITzoneC
Timp execuţie pe test0.15 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Apel

Un apel de functie este un sir de caractere, constituit din numele functiei apelate (o litera mare a alfabetului englez), urmat de lista parametrilor actuali ai functiei, incadrata intre paranteze rotunde. In lista de parametri actuali pot fi 1, 2, ... maximum 10 parametri, separati prin virgula. Un parametru actual poate fi o constanta (o cifra araba), o variabila (o litera mica a alfabetului englez) sau un apel de functie.

De exemplu: F(2,a,G(c),G(H(x)))
Functia apelata este F cu 4 parametri. Primul parametru actual este constanta 2, al doilea este variabila a, al treilea este apelul functiei G (functie cu un singur parametru - variabila c), al patrulea este apelul functiei G (care are ca parametru apelul functiei H).

Numarul de parametri ai unei functii se numeste aritate. O functie poate fi apelata de ori cate ori, dar de fiecare data numarul de parametri specificati la apel trebuie sa fie egal cu aritatea functiei.

Fiecare dintre functiile care intervin in apel se poate explicita cu ajutorul unei expresii aritmetice sub forma:
F(a,b,c,...)=expresie_aritmetica
Parametrii specificati la explicitarea functiei ii vom denumi parametri formali. Daca functia are aritatea n (1 ≤ n ≤ 10), atunci cand explicitam functia, parametrii formali sunt denumiti utilizand in ordine primele n litere mici ale aflabetului englez. In expresia aritmetica care expliciteaza functia apar ca variabile doar parametrii formali ai functiei (denumiti asa cum am precizat cu primele n litere mici ale alfabetului englez).
Expresia aritmetica ce expliciteaza o functie este constituita din unul sau mai multi termeni separati prin operatorii + (semnificand adunare) sau - (semnificand scadere). Un termen este constituit din unul sau mai multi factori separati prin operatorul * (semnificand inmultire). Un factor poate fi o constanta (cifra araba), o variabila (un parametru formal al functiei) sau o expresie aritmetica incadrata intre paranteze rotunde.

Valoarea obtinuta in urma unui apel de functie se obtine inlocuind in ordine parametrii formali cu parametrii actuali, apoi efectuand operatiile specificate in expresia aritmetica ce expliciteaza functia.

Cerinta

Dat fiind un apel de functie, valorile variabilelor care intervin in acest apel, precum si explicitarile functiilor utilizate in acest apel, sa se determine valoarea obtinuta in urma acestui apel.

Date de intrare

Fisierul de intrare apel.in contine pe prima linie sirul de caractere care reprezinta apelul functiei. Pe urmatoarele linii sunt descrise valorile variabilelor, cate o variabila pe o linie sub forma:
nume_variabila=valoare
Pe urmatoarele linii sunt explicitate functiile ce intervin in apelul de pe prima linie, sub forma descrisa in enunt.

Date de iesire

Fisierul de iesire apel.out va contine o singura linie pe care va fi scris un numar intreg reprezentand valoarea obtinuta in urma apelului din fisierul de intrare.

Restrictii

  • Orice linie din fisierul de intrare are maximum 250 de caractere.
  • Valorile variabilelor sunt numere naturale de maximum 3 cifre.
  • Valoarea obtinuta in urma apelului functiei este in intervalul [-2.000.000.000, 2.000.000.000].

Exemplu

apel.inapel.out
F(2,a,G(c),G(H(x)))
x=3
a=0
c=1
H(a)=2*a-3
G(a)=2*a*a-5*a+6
F(a,b,c,d)=a*b*c-2*d*c+4*a*c
-30

Explicatie

Functia F are 4 parametri. Primul parametru formal (a) este inlocuit de primul paramatru actual (deci are valoarea 2).
Al doilea parametru formal (b) este inlocuit de al doilea parametru actual deci are valoarea variabilei a (adica 0).
Al treilea parametru formal (c) este inlocuit de al treilea parametru actual (apelul G(c)) deci are valoarea 2*1*1-5*1+6=3
Al patrulea parametru formal (d) primeste valoarea celui de al patrulea parametru actual (apelul G(H(x))) adica 2*H(x)*H(x)-5*H(x)+6=2*(2*x-3)*(2*x-3)-5*(2*x-3)+6=9.
Deci, valoarea apelului functiei F este:
2*0*3-2*9*3+4*2*3=-30.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content