Fişierul intrare/ieşire: | apel.in, apel.out | Sursă | ONI 2007, clasa 10 |
Autor | Emanuela Cerchez | Adăugată de | |
Timp execuţie pe test | 0.075 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/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.in | apel.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.