.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » apel

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
apel


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
2MB / 1MB

Un apel de funcţie este un şir de caractere, constituit din numele funcţiei apelate (o literă mare a alfabetului englez), urmat de lista parametrilor actuali ai funcţiei, încadrată între paranteze rotunde. În lista de parametri actuali pot fi 1, 2, ... maximum 10 parametri, separaţi prin virgulă. Un parametru actual poate fi o constantă (o cifră arabă), o variabilă (o literă mică a alfabetului englez) sau un apel de funcţie.
De exemplu: F(2,a,G(c),G(H(x)))
Funcţia apelată este F cu 4 parametri. Primul parametru actual este constanta 2, al doilea este variabila a, al treilea este apelul funcţiei G (funcţie cu un singur parametru – variabila c), al patrulea este apelul funcţiei G (care are ca parametru apelul funcţiei H).
Numărul de parametri ai unei funcţii se numeşte aritate. O funcţie poate fi apelată de ori câte ori, dar de fiecare dată numărul de parametri specificaţi la apel trebuie să fie egal cu aritatea funcţiei.
Fiecare dintre funcţiile care intervin în apel se poate explicita cu ajutorul unei expresii aritmetice sub forma:
F(a,b,c,...)=expresie_aritmetică
Parametrii specificaţi la explicitarea funcţiei îi vom denumi parametri formali. Dacă funcţia are aritatea n (1≤n≤10), atunci când explicităm funcţia, parametrii formali sunt denumiţi utilizând în ordine primele n litere mici ale aflabetului englez. În expresia aritmetică care explicitează funcţia apar ca variabile doar parametrii formali ai funcţiei (denumiţi aşa cum am precizat cu primele n litere mici ale alfabetului englez).
Expresia aritmetică ce explicitează o funcţie este constituită din unul sau mai mulţi termeni separaţi prin operatorii + (semnificând adunare) sau - (semnificând scădere). Un termen este constituit din unul sau mai mulţi factori separaţi prin operatorul * (semnificând înmulţire). Un factor poate fi o constantă (cifră arabă), o variabilă (un parametru formal al funcţiei) sau o expresie aritmetică încadrată între paranteze rotunde.
Valoarea obţinută în urma unui apel de funcţie se obţine înlocuind în ordine parametrii formali cu parametrii actuali, apoi efectuând operaţiile specificate în expresia aritmetică ce explicitează funcţia.

Cerinţă

Dat fiind un apel de funcţie, valorile variabilelor care intervin în acest apel, precum şi explicitările funcţiilor utilizate în acest apel, să se determine valoarea obţinută în urma acestui apel.

Date de intrare

Fişierul de intrare apel.in conţine pe prima linie şirul de caractere care reprezintă apelul funcţiei. Pe următoarele linii sunt descrise valorile variabilelor, câte o variabilă pe o linie sub forma:
nume_variabila=valoare
Pe următoarele linii sunt explicitate funcţiile ce intervin în apelul de pe prima linie, sub forma descrisă în enunţ.

Date de ieşire

Fişierul de ieşire apel.out va conţine o singură linie pe care va fi scris un număr întreg reprezentând valoarea obţinută în urma apelului din fişierul de intrare.

Restricţii

Orice linie din fişierul de intrare are maximum 250 de caractere.
Valorile variabilelor sunt numere naturale de maximum 3 cifre.
Valoarea obţinută în urma apelului funcţiei este în intervalul [-2 000 000 000, 2 000 000 000].

Exemple

apel.inapel.outExplicaţii
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 Funcţia F are 4 parametri. Primul parametru formal (a) este înlocuit de primul paramatru actual (deci are valoarea 2).
Al doilea parametru formal (b) este înlocuit de al doilea parametru actual deci are valoarea variabilei a (adică 0).
Al treilea parametru formal (c) este înlocuit de al treilea parametru actual (apelul G(c)) deci are valoarea 2*1*1-5*1+6=3
Al patrulea parametru formal (d) primeşte valoarea celui de al patrulea parametru actual (apelul G(H(x))) adică 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 funcţiei F este:
2*0*3-2*9*3+4*2*3=-30.


autor: Prof. Emanuela Cerchez
propunător: Prof. Marinel Şerban
Liceul de Informatică “Grigore Moisil”
marinel_serban@yahoo.com
Articole recomandate
Probleme recomandate
De la ONI 2007: ceas, numere4, cifru, oua, turn, div3, jeton, politic, trecere, agitatie, lacuri, secv, sotron, triunghi, castel, excursia, matricea, randuri, zidar, desc, felinar, joc6, log, maxq, tric, cover, dist, munte1, promo, puncte1, role
De acelaşi autor: celule, scp, vedete, film, ab, supertri, inginer, camp, sl, detinut, simetric, egal, gropi, ruleta, carti, tgv, uscat, afise, dezbateri, bunici, rv, onu, nspecial, secvop, cadou, chimie, reteta, piticot, petrol, checkin, teanc, index, teren, pizza, ecran, drum, text, lbd, aven, spam, pluricex, tren2, gray, pasi, mgo, joc, anagrame, vecini, criptmat, maxim, cutie, party, friends, net, sablon, hd, pc, sir2, aztec, scara, nr, robot2, sah, formule, ed, bilete, hanoig, flood, matrice3, erdos, grup, cd, kfactor, np, cuc, radio, honest, ref, nr01, scor2, convert, auto2, compress, politics, pm, playlist, barbie, firma1, submatrix, ham, pizza1, exam, ants, teatru1, cifre1, bile1, caini, secvreg, pasune, remi, m01, sir23, tren1, joc5, pachete, aedaro, windows, renju, latime, mere1, piloti, peste, pitici, sirag1, stive, turn1, carti1, program1, spioni, kgb, lift, lex, oras, homeless, subsir, dist, harta1, adevar, joc10, bare, zapezi, masina2, perechi1, raft, joc11, joc12, ferma, fni, tunel, lover, pepsi, transport, avion, monkey, premii1, garaj, carti2, tv, pact, fat, cafea, echipe1, secvente, petrom, peg, scara1, lant, ecuatii, stiva, bile4, jungla, rj, poli, text1, compus1, rez, politie, anag, codul, coment, muzeu, seti, basm, timer, secvsir, dp, placa, prod3, bursa, submdisj, sotron1, fazan, secvpar, joker, lego, medalii, cfr, antipatie, figura, links, segm, colorare, brazi, mobil, distsir, guess, greiere, pestera, conferinta, chei, ny, nx, ghinion, sumb, drenaj, telecomanda, grupuri, mahjong, rotund, viena, sport2, cos, monoton, micro, valet, nr0, maxviz, anagramabil, nrpal, lista, dame, consiliu, adprod, arme, deal, prodnr, compar, latin, interviu, vintage, prize, nrdiv, arrows, tdrept, agenda, reziston, vot2, tema, smiley, relatii, ech, scadere, nebuni, castig, expand, wb, prime2, virgule, b210
Despre recursivitate: tren, mere, chimie, sarpe, soldati, formule, infinit, compress, ploaia, cartoane, sub, metro, windows, lacuri, maxq, pav, joc11, paianjen, suma2, monkey, csir, lsort, imagine, dir, desert, echitabil, rez, logic, gradina, links, dreptunghiuri, expresie1, cumpanit, reziston, antitero, sablon3
Despre recurenţă: nrbun2, nrbun, grupe, palind, siruri, vecini, net, pioni, sir2, perm, red, sume3, pavaj, div3, descfib, robot1, soldati1, expresii, agitatie, aparitii, randuri, zidar, log, maxq, cover, dist, munte1, sir1, vizibil, csir, puncte2, aranjari, numere5, anticip, bsir, evantai, sg1, zumzi, lant, perfect, cifru2, numere8, poarta, pviz, poli, desert, echitabil, patrate6, kperms, jump, petrecere, rege, triunghi3, sir9, arbore1, fibgcd, cds, wg, module, nr0, cover1, culori1, 2ndesc, flori2, cntgcd, 2sah, matcnt, nmult
Software recomandat
surse trimise | ajutor